LINUX.ORG.RU

Зависание RK3568 U-boot на Starting kernel...

 , , ,


0

3

Добрый день. Пытаюсь сделать сборку под 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 ...

Как было выше сказано. Проверь номер UART-а и скорость вывода. Про 1500000 верный момент. Подключался ты с какими параметрами?

Ядро версия 6.6

Что-то старенькое. По идее Mainline U-Boot и ядро Linux нормально поддерживаются (с.м. поддержку RK3588). Соответственно вопрос: что собираешь? SDK «от производителя»?

В принципе, свои платы поднимал влёт, что в Buildroot, что в Yocto. Тут по сути, только DTS добавить.

AlexVR ★★★★★
()
Ответ на: комментарий от Jullyfish

Да, но нужны не легаси, старые, а новые, с поддержкой extlinux.conf. Причем, сборка используется от самих Inmys и на их evb нормально работает. Но у них единый образ на eMMC или SD, не подходит. Нужно с поддержкой нескольких разделов. и вот здесь какая-то засада. Те же самые u-boot (запускается), kernel, dtb не запускаются

kriptonus
() автор топика
Ответ на: комментарий от AlexVR

dts беру от производителя, на их SOM. Но я в дереве не очень разбираюсь. Есть еще один DTS, конкретно под эту плату, составлял другой человек, но и с ним тоже не поднимается

kriptonus
() автор топика
Ответ на: комментарий от Merionet

Пробовал, не помогает, да и это уже гораздо позже в ядре происходит монтирование рутфс. На начальную загрузку ядра никак не сказывается

kriptonus
() автор топика
Ответ на: комментарий от AlexVR

Да, но если собрать uboot с такой скоростью, то кракозябры до переключения порта на нужную скорость (1500000). Так что, если бы ядро что-то плевало, не на скорости порта, все равно кракозябры бы высыпались

kriptonus
() автор топика

Подскажите, как можно попытаться отладить этот момент?

В теории есть отладочная печать. И судя по исходному коду, вокруг Starting kernel ... есть чему печататься. На практике, мне не получилось по этой инструкции ничего добиться. Ни конфигами, ни с помощью define в сишных файлах.

Единственное, что сработало – добавить #define DEBUG в include/common.h, но после Das U-boot (а мы крепчаем) отваливается в этом месте:

Cannot find uclass for id 12: please add the UCLASS_DRIVER() declaration for this UCLASS_... id
drivers/core/ofnode.c:78: ofnode_read_bool: Assertion `ofnode_valid(node)' failed.
### ERROR ### Please RESET the board ###
Jullyfish
()

А может и не зависает? У uboot одни настройки вывода сообщений, у ядра - другие…

Может вообще вывод отладочных сообщенйи отключён, надо проверить:

Kernel hacking  --->
    [*] Kernel debugging              # CONFIG_DEBUG_KERNEL
    [*]   Debug printk                # CONFIG_DEBUG_PRINTK
    [*] Enable dynamic printk support # CONFIG_DYNAMIC_DEBUG 


Kernel hacking  --->
    Early printk                      # CONFIG_EARLY_PRINTK

General setup  --->
    Default kernel log level (1..7)  # CONFIG_DEFAULT_MESSAGE_LOGLEVEL


Отладка через серийный порт (если нет графики):

Device Drivers  --->
    Character devices  --->
        Serial drivers  --->
            [*] Console on serial port (например, 8250/16550)

Kernel hacking  --->
    [*] Serial port early console     # CONFIG_SERIAL_EARLYCON

Направление вывода отладочных сообщений задаётся параметрами командной строки ядра.

Основные параметры:

console=tty0 - вывод на основной дисплей (фреймбуфер)
console=ttyS0,115200n8 - вывод на последовательный порт (скорость 115200)
console=tty0 console=ttyS0,115200 - на оба устройства (сообщения дублируются)
earlyprintk=serial,ttyS0,115200 - ранний вывод через COM-порт
earlyprintk=vga - ранний вывод на VGA (не всегда работает)
PeleWin
()

А после Starting kernel ... на видео выход что-то выводится?

Когда хотел запустить линукс на плйере на старом рокчипе, перебирал готовые образы. Один армбиан на ядре 5.10.27 запустился и работал. А другие, после Starting kernel ... в ттл-уарт, через 1-2 секунды вываливали 1-2 экрана текста, видимо что ядро раскрошилось, и стоял. Но не все, некоторые образы даже этого не писали на экран.

anonymous
()
Ответ на: комментарий от anonymous

вываливали 1-2 экрана текста

Уточнение. Вываливали на монитор подключенный по HDMI. А в ттл-уарт вывод прекращался.

anonymous
()

У меня на 3588 в mainline earlycon тоже не заработал, вывод в hdmi работает, консоль после загрузки тоже. Попробуй ttyS0/ttyS1/ttyS2 в console прописать, может он доходит до консоли

mittorn ★★★★★
()
Ответ на: комментарий от Merionet

По идее, u-boot использует безопасное перемещение при перекрытии регионов.

anonymous
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария