Интересно, что передается в из uboot в linux, кроме bootargs.
Например, передаётся ли настройка FLASH или SDRAM? или в ядре это инициализируется заново?
как я понял из исходников, после инициализации PLL в uboot, ядро не инициализиует систему тактирования, а лишь анализирует установленные значения
Кроме аргументов запуска ядра ничего больше не передается.
Флешки заново инициализируются, хотя, это все уже от драйверов и их настроек зависит.
Настройки динамической памяти ядро не трогает, потому как это равносильно пилению сука на котором сидишь, исключение составляют лишь случаи режимов пониженного энергопотребления (которые на нашем железе не используются), но это все отдельная история - тогда нужно настройки памяти и в ядре дублировать.
Дабы не плодиь темы решил задать вопорос здесь.
Вопрос относительно размещения Rootfs с MMC
Что нужно для корректного определения ядром рутовой на mmc
1) указать в bootargs root=/dev/mmcblk0p1 (в зависимости от раздела размещения рутовой)
2) включить в ядре поддержку mmc
Кроме этого еще, убедиться, что правильно настроен пин обнаружения карты, а в командную строку добавить ключ rootwait, поскольку карты mmc обнаруживаются динамически.
У меня опыт только по армам, но подозреваю, что в структуре stm32_mci_data должно быть поле типа detect_pin, в этом поле указывается порт gpio, к которому подключен контакт обнаружения карты разъема SD. Драйвер mci определяет наличие карты по уровню на указанном пине.
А еще по поводу обнаружения карты и названия устройства я бы для начала вмонтировал rootfs в образ ядра (опция initramfs source) и загрузил его до нормального входа в систему, тогда можно будет посмотреть, как обнаруживается устройство и как будет называться метка в devfs.
Сейчас разработчики драйвера сделали так что detect_pin не используется и для драйвера карта всегда подлкючена.
Идея с initramfs интереса. Буду пробовать