Как диагностировать зависание RK3568 U-boot на Starting kernel?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: пытаюсь сделать сборку под 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
Редакция Security Ответ

Зависание 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'
boot

setenv bootargs 'console=ttyS2,1500000n8 earlycon=uart8250,mmio32,0xfe660000 loglevel=8 root=/dev/mmcblk0p2 rootwait rw' boot

Адрес UART и имя консоли зависят от вашей платы. Для RK3568 часто встречается ttyS2 и скорость 1500000, но это не универсальное правило. Смотрите DTS вашей платы или документацию vendor BSP.

Проверьте три вещи:

  • правильный ли dtb загружается;
  • соответствует ли ядро этому DTB;
  • правильно ли указан root-раздел.

Типовой набор команд в U-Boot:

printenv bootargs
printenv bootcmd
mmc list
part list mmc 0
ext4ls mmc 0:1 /boot
ext4ls mmc 0:2 /

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}

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 диагностика почти слепая.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно