Решил попробовать загрузку с USB флешки, всё грузится нормально но одна проблема – после того как появилась строка приглашение (ввод имени пользователя) отваливается терминал, причём по телнету могу залогиниться, система работает нормально. Так же если по телнет написать echo test > /dev/ttyAM0 то в терминале вижу результат. Но писать в терминале ничего нельзя. Как будто бы отвалилась передача по уарт в одном направлении.
Заметил в messages логах иногда появляются сообщения NOHZ: local_softirq_pending 08.
Решил поробовать:
- rootfs на NFS, втыкаю USB флешку – отваливается сеть.
- rootfs на ramfs, втыкаю USB флешку – всё работает номально.
Порт и сетка с подключённой USB флешкой работают нормально при импользовании ramfs.
При загрузки с USB флекши (ядро и rootfs на USB носителе) отваливается уарт на приём, также в терминале несколько раз печатается сообщение local_softirq_pending 08
При загрузки по NFS (ядро и rootfs в сети) в момент подключения USB флешки отваливается сеть (плата не пингуется).
Физическая неисправность порта здесь не причём (т.к при рамфс всё работает нормально), возможно конфликт драйверов или ещё что-нибудь. С USB флешки пробовали грузиться, терминал работал нормально ?
причем баг бутрома интересный - при загрузке с nand помоему пины переключаются в бутроме, а с остальных носителей - нет, в общем надо добавить перевод пинов в бутсриме на UART. В imx-bootlets-src-10.12.01 я добавлял так
Юбут собрал с бултетсом для самсунг пямяти, прошил его в нанд а далее все различные загрузки пробую из под юбута (по USB, NFS . . .).
В юбте терминал работает нормально, после загрузки системы начинаются проблемы которые я описывал выше.
Хе - бага не было, забыл что отключил инит пинов для duart в ядре. Чтобы консоль после u-boot не отваливалась - сделайте заглушку для ehci_hcd_stop в исходниках u-boot в файле
/drivers/usb/host/ehci-mxs.c
это драйверы в "первозданном" виде :) с исправленым багом в ks8851, работать будут чуть медленней но стабильность важней я думаю.
PS просьба отписать - получилось у вас или не получилось, потому что все это не тестировалось.
UPD причина в том что я просмотрел - у imx28 два порта USB и на месте clkgate второго порта у imx233 uart_loopback (см. Table 6-2. HW_DIGCTL_CTRL), поэтому в ф-ции ehci_hcd_stop при записи
/* Gate off the USB clock */
writel(HW_DIGCTL_CTRL_USB0_CLKGATE | HW_DIGCTL_CTRL_USB1_CLKGATE,
&digctl_ctrl->reg_set);
на уартах включался loopback, так что можно не удалять все содержимое а удалить все что касается HW_DIGCTL_CTRL_USB1_CLKGATE в этом файле