Прояснился процесс загрузки, он описан здесь http://www.freescale.com/files/32bit/doc/user_guide/evk2009_12_imx23_Linux_UG.pdf?fpsp=1&WT_TYPE=Users%20Guides&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation
смысл - внутренний bootrom распознает так называемые boot stream которые как раз описываются файлами sb. Чтобы записать бутстрим в nand нужна утилита kobs-ng
#kobs-ng -d imx233_linux.sb
т.о. нужно каким-то образом получить этот бутсрим (в "методичке" :) фрискейла это делают через nfs ) и записать этой утилиткой. Бутсримы создаются двух типов :
1 напрямую загрузка ядра
2 убутовый бутстрим (написано редбут не поддерживается тогда зачем он там в sdk мне совсем непонятно).
В апдейтере как раз 1 - сразу запускается ядро после бутстрапа. В любом случае нужно будет поднимать сеть. Надо посмотреть usb gadget, в другой методичке написано что линуксовый дравер поддерживает ethernet эмуляцию, может через тот же usb законнектиться. В общем вроде все ясно. rootfs аналогично - получить доступ к имиджу, уже никаких sb не нужно - записать только уже обычнной nand_write на раздел mtd или распаковать в раздел с ubifs.
В общем - бутрому без разницы откуда скармливают ему эти sb файлы, хоть с usb хоть с sd или nand, главное их правильно записать, но это все одни и теже данные из файлов sb. Порадовала там другая методичка про linux - похоже все возможности камня реализованы в линуксовых драйверах полностью, включая аппаратное шифрование и переключение видеовыхода lcd/tv из коробки, изменение частоты процессора "налету" и тд..
Там все nfs предлагают, но у нас утилита вендовая, а эмулятор с линуксом еще бриджить нужно что бы сеть заработала, можно подругому сделать - расшарить любую папку вендовую через сеть майкрософт а корневую фс собрать с samba+fuse - например smbnetfs и при помощи него смонтировать сетевую шару и клади туда что хочешь.
Я решил загрузку с NAND флешки оставить на самый конец (все равно в каком-нибудь виде сделаю), сейчас проверю драйвер NAND и USB хост, а потом за драйвер EMAC+PHY сети возьмусь.
Забавно, ложу твой конфиг в ядро, запускаю сборку, она тихим сапом меняет его на свой ...
Так продолжалось, пока дефконфиги iMX233 из самого ядра не удалил.
Итак, с NAND флешкой все в порядке, а вот с USB какая то неувязочка, лог:
Если после загрузки системы вставить USB флешку и подать на нее питание (через джампер), система тут же ресетится.
Я в конфиге ядра вроде все упоминания о USB dev убрал, но смущает строчка в логе usbcore: registered new device driver usb
Попробовал натянуть sb обертку на систему с минимальным профилем, пока собрать без ошибок не могу ...
Думаю это вообще можно не делать вручную - достаточно просто в конфиге ядра в разделе initramfs указать путь к корневухе, ядро само сделает монолитный образ который система сборки завернет сама в sb
imx233_linux.sb - это она всегда делает.
Можно вообще подсунуть rootfs от мнуком или самов, процессор тот же самый, будет все работать. Единственно на устройства надо симлинки сделать ttyS0 -> ttyAM0 или вообще скопировать /dev которой тут статический есть.
Выложи конфиг ядра, посмотрю что там творится :)
Интеренет у меня не шустрый - пишет окончание скачивания через 4 ч...
"nnj я как раз и пытался делать, когда сначала на минимальном профиле сидел, она корневуху в ядро включает а imx233_linux.sb не обновляла (хотя тогда я позже заметил чтто нужно rootfs снести), позже попробую ...
По поводу USB из электрических наблюдений, на USB пинах после включения (т.е. когда плата как dev) на одном 0,5В на другом 1,5В, после загрузки системы на обоих линиях 0 (очень странно), сложно сказать, это 0 "подтянутые" или логические (судя по всему логические, раз сбрасывается).
Для чистоты эксперимента, питание USB флешки завел через отдельный БП, но все осталось без изменений.
Может попробовать пока без OTG ?
Support for DR host port on Freescale controller
кстати есть такая особенность у этих камней - их порт ehci не работает с низкоскоростными устройствами, их если что нужно цеплять через внешний скоростной хаб.
Действительно, про OTG забыл, там с ним еще логика опроса-подключения должна быть связана, отключил но без изменений :(
Сейчас наконец собрал систему (с корневухой) в sb обертке с минимальным профилем, зараза, в логе получаю строчку INITRD: 0x40400000+0x00400000 overlaps in-use memory region - disabling initrd, а в конце пытается по сети корневухв подключить
Блин, черт ногу сломит с местным USB ...
В "оригинале" USB подключается к OTG (mini-B) разъему, питание управляется через GPMI_CE2, а нанализ ID пина OTG разема идет на SSP1_DETECT ...
Такое чуство, что логика работы отдельно хоста в BSP не предусмотрена и надо наверное рыть в сторону какого то "переключения" режима.
По приятному стечению обстоятельств SSP1_DETECT выведен у меня на внешний разъем, ради эксперимента установил там 1 и посмотрел на поведение, ничего не изменилось.