Как диагностировать зависание RK3568 U-boot на Starting kernel?
Ссылка скопирована
Сейчас ситуация такая: пытаюсь сделать сборку под Inmys SOM на RK3568, чтобы ьыла возможность грузиться с разных разделов, через extlinux.conf. Сами разделы созданы, файлы разложены. Проблема даже не в этом. Не удается загрузить ОС даже просто расположив образ ядра и dtb в памяти, зависает на Starting kernel… подскажите, как можно попытаться отладить этот момент? Ядро версия 6.6
Отладка в ядре включена.
Лог загрузки:
U-Boot 2024.01 (Apr 16 2026 - 10:17:51 +0300) Model: NMS-SM-EVM with NMS-SM-RK3568 DRAM: 4 GiB (effective 3.7 GiB) PMIC: RK8090 (on=0x40, off=0x00) Core: 314 devices, 30 uclasses, devicetree: separate MMC: mmc@fe2b0000: 1, mmc@fe310000: 0 Loading Environment from MMC... *** Warning - bad CRC, using default environment In: serial@fe660000 Out: serial@fe660000 Err: serial@fe660000 Model: NMS-SM-EVM with NMS-SM-RK3568 Net: eth1: ethernet@fe010000, eth0: ethernet@fe2a0000 Hit any key to stop autoboot: 0 => ext4load mmc 0:1 $fdt_addr_r /rk3568-inmys-smarc-evm.dtb 60359 bytes read in 12 ms (4.8 MiB/s) => ext4load mmc 0:1 $kernel_addr_r /Image 30867968 bytes read in 677 ms (43.5 MiB/s) => printenv bootargs ## Error: "bootargs" not defined => setenv bootargs earlycon=uart8250,mmio32,0xfe660000,115200n8 console=ttyFIQ0 root=/dev/mmcblk0p2 rw rootwait debug => booti $kernel_addr_r - $fdt_addr_r Moving Image from 0x2080000 to 0x2200000, end=4010000 ## Flattened Device Tree blob at 0a100000 Booting using the fdt blob at 0xa100000 Working FDT set to a100000 Loading Device Tree to 00000000eceb8000, end 00000000ecec9bc6 ... OK Working FDT set to eceb8000 Starting kernel ...
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
1 ответ

Зависание RK3568 на строке
Starting kernel...обычно означает, что U-Boot передал управление ядру, но ядро либо не стартует, либо стартует без видимого вывода в консоль. На этом этапе проблема чаще всего не в самом U-Boot, а в параметрах загрузки ядра, device tree, initramfs/rootfs или консоли.Первое, что нужно проверить — переменная
bootargs. Для отладки добавьте максимально подробный вывод:setenv bootargs 'console=ttyS2,1500000n8 earlycon=uart8250,mmio32,0xfe660000 loglevel=8 root=/dev/mmcblk0p2 rootwait rw' bootsetenv bootargs 'console=ttyS2,1500000n8 earlycon=uart8250,mmio32,0xfe660000 loglevel=8 root=/dev/mmcblk0p2 rootwait rw' boot
Адрес UART и имя консоли зависят от вашей платы. Для RK3568 часто встречается
ttyS2и скорость1500000, но это не универсальное правило. Смотрите DTS вашей платы или документацию vendor BSP.Проверьте три вещи:
dtbзагружается;Типовой набор команд в U-Boot:
printenv bootargs printenv bootcmd mmc list part list mmc 0 ext4ls mmc 0:1 /boot ext4ls mmc 0:2 /
Если ядро собрано без поддержки нужной консоли или earlycon, Вы увидите только
Starting kernel.... Если rootfs указан неверно, обычно ядро всё же пишет panic, но при неправильной консоли этого не видно.Также проверьте формат загрузки: обычный
Image,zImage,fitImageи адреса загрузки должны соответствовать командеbooti/bootm. Для ARM64 чаще используетсяbooti:load mmc 0:1 ${kernel_addr_r} /Image load mmc 0:1 ${fdt_addr_r} /rk3568-board.dtb booti ${kernel_addr_r} - ${fdt_addr_r}
Если используется vendor-образ Android/Linux, там может быть своя разметка и загрузочные разделы. В таком случае лучше сначала загрузить заведомо рабочий образ для этой платы, сохранить его
printenv, а потом сравнивать с вашим образом.Итог: включайте early console, проверяйте DTB, rootfs и адреса загрузки. Без вывода ядра по UART диагностика почти слепая.