здавсвуй, скачал ядро imx_2.6.31_10.08.01, накатил патч от sasamy http://www.starterkit.ru/html/index.php?name=forum&op=view&id=9854#9934, пытаюсь загрузится с SD карты, но ни чего не выходит, как я понял из лога карта не инициализируется. В логе при загрузке всего несколько строк с упоминанием mmc:
Kernel command line: console=ttyAM0,115200n8 ssp1=spi1 ssp2=mmc root=/dev/mmcblk0p2 roott
regulator: mmc_ssp-1: 0 <--> 2147483 mA fast normal
regulator: mmc_ssp-2: 0 <--> 2147483 mA fast normal
Waiting for root device /dev/mmcblk0p2...
Оно появляется в самом начале потом больше не беспокоит. Драйвер ks8851 очень запутан в плане взаимодействия процессов из-за того что интерфейс spi требует вызов из контекста который может переходить в состояние ожидания. Вызовы для приема/передачи от сетевой подсистемы происходят в контексте softirq который не может переходить в состояние ожидания, обработчик прерываний тоже не может засыпать, поэтому там на каждый вызов создается отдельный поток, эти потоки могут работать только единолично - нельзя одновременно передавать и принимать по spi к тому же сам ks8851 может работать с буферами либо TX либо RX. Эти потоки блокируются на мьютексах - что там происходит я пытался понять но потом чета руки опустились :) В общем эти сообщения никак не вляют на работу - ошибки компенсируются протоколами верхнего уровня OSI, да к тому же как я говороил появляются они только в самом начале работы.
В драйвере ядра идущем с платой нет прерываний - там порождается отдельный поток который вместо прерываний опрашивает состояние ks8851, тогда это было обусловлено тем что нормальный драйвер нарывался на дидлок всего ядра, баг с дидлоком фрискейловцы пофиксили совсем недавно. Разница на протоколах не таких примитивных как tftp еще больше - тот драйвер был как временное решение чтобы сеть как то работала.