LINUX.ORG.RU

Embedded linux. No kernel messages

 ,


1

2

Здравствуйте! Имеется такая плата. Хочу поднять на ней торрент клиент. Процессор: Mstar Ssr621Q На борту uBoot + Embedded linux. Подключился я к плате по UART и начал эксперименты. В консоль uboot попасть не удалось, нет сообщений предлагающих прервать загрузку и на всякие CTRL+C не реагирует. Попробовал прервать процесс закоротив ножки памяти что бы он не смог загрузить ядро, но и тут китайцы подстраховались и юбут запросил пароль. Т.е. доступа к консоли не видать. Но как выяснилось можно прошиваться через юсб флешку. Засунул я на рутфс сторонний busybox, поднял telnetd и таким способом попал в систему. После долгих игр с библиотеками и прочим удалось поднять там transmission-daemon. Но проблема в том что в родной системе нет поддержки файловых систем EXT2-4 (на уровне ядра), только FAT и NTFS ro. FAT не очень сюда подходит, если я правильно нагуглил в родном исполнении система писала на диск напрямую без использования файловой системы, ну или она там какая-то своя. Так же пробовал собирать свою систему на buildroot, которая уже получается не так порезана, без проблем туда при сборке внедряется торрент клиент и вообще более приятна. Но все это работало с родным ядром и естественно без поддержки EXT4. Теперь главная проблема: не могу подсунуть в эту плату свое ядро, т.к. нет никаких сообщений от него :( Что в родной системе, что от моего собранного ядра. Но родное хотя бы загружается хоть и молча.

##  Booting kernel from Legacy Image at 22000000 ...
   Image Name:   Linux-4.9.84
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2235568 Bytes = 2.1 MiB
   Load Address: 20008000
   Entry Point:  20008000
-usb_stop(USB_PORT0)
-usb_stop(USB_PORT1)
   Loading Kernel Image ... OK
using: ATAGSS
atags:0x20000000

Starting kernel ... <-- на этом все, больше никакого вывода
Не могу разобраться как заставить ядро выводить сообщения. Как я выяснил для подобных систем нужны DTS/DTB файлы, но под этот процессор практически ничего не найти. Вытащил этот файл с родного ядра, скармливал своему но не помогло. Дальше я нашел ядро другой платы(TP-LINK TL-NVR6108C-B) с таким же процессором, которое выводит сообщения при загрузке! Но не грузит систему т.к. там указаны совсем другие разделы. Я достал DTB оттуда, но он мне тоже никак не помог. Т.к. под эти процессор/плату нет никаких готовых конфигов я застопорился. Само ядро не выводит никакой информации и не понятно работает или нет. Саму систему так же не загрузить, т.к. места на разделе 4мб, а минимальный размер ядра что у меня выходит 3.5мб и уже ничего туда не влазит. Ну а что бы еще больше уменьшать его размер нужно хотя бы видеть работает оно или нет. Возможно что-то блокирует uboot, но его прошивать не хочу т.к. нет программатора под рукой вернуть все в зад. С другой стороны ядро с другой платы выводит сообщения. Буду рад Вашей помощи. Предоставлю дополнительную информацию по запросу.



Последнее исправление: libixur (всего исправлений: 1)
Ответ на: комментарий от kindof

Стоит флешка на 16мб

Flash is detected (0x0016, 0x20, 0x40, 0x18)
eFlashType: 22.
Flash Name: XM25QH128C{0x204018), 0x1000000.
...
Creating 8 MTD partitions on "nor0":
0x000000000000-0x000000010000 : "ipl"
0x000000010000-0x000000050000 : "boot"
0x000000050000-0x000000440000 : "romfs"
0x000000440000-0x000000b10000 : "usr"
0x000000b10000-0x000000ca0000 : "web"
0x000000ca0000-0x000000f60000 : "custom"
0x000000f60000-0x000000f80000 : "logo"
0x000000f80000-0x000001000000 : "mtd"
Вместо дампа прошивка пойдет? Содержит основные разделы. https://tehno32.ru/sites/default/files/xm/c6380233_nbd80s16s-kl.zip

.bin файл является архивом, внутри образы разделов.

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

Есть маленькое продвижение. Скачал отсюда https://github.com/linux-chenxing ядро(тут имеется defconfig под процессоры mstar) и собрал его включив Kernel low-level debugging functions и Early printk. Получил следующее при загрузке:

Starting kernel ...


Error: invalid dtb and unrecognized/unsupported machine ID
  r1=0x00000573, r2=0x20000000
  r2[]=05 00 00 00 01 00 41 54 00 00 00 00 00 00 00 00
Available machine support:

ID (hex)        NAME
ffffffff        Generic DT based system

Please check your kernel config and/or bootloader.
Уже хорошо, оно хоть что-то начало мне ругаться. Дальше понимаю что нужно бы ему еще скормить dtb. Т.к. у меня нет доступа к ю-бут я нашел только один вариант как это сделать: https://cateee.net/lkddb/web-lkddb/ARM_APPENDED_DTB.html

Включаю в ядре опцию Use appended device tree blob to zImage. Собираю, если сразу загрузить это ядро в плату получаю то же сообщение что и выше, т.е. все ок. Как только дописываю к ядру dtb файл сразу перестаю получать какой либо вывод после Starting kernel .... Дописывал так же как описано в статье cat zImage name.dtb > zImage_with_dtb

Кто знает в чем может быть проблема или как еще можно передать плате DTB не имея доступа к uboot.

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

Попробуй собрать под дистрибутивное ядро модуль ext4 и жёстко его загрузить вручную игнорируя проверку версии ядра.

Исходники ядра лучше брать примерно той же версии, что и родное ядро.

Если прочие зависимости для ext4 соблюдены, то модуль, возможно, будет работать.

Если заведется пропишешь команду загрузки модуля в любой стартовый сценарий.

А так, торрента можешь и на нтфс писать.

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

Вместо дампа прошивка пойдет? Содержит основные разделы. https://tehno32.ru/sites/default/files/xm/c6380233_nbd80s16s-kl.zip

  1. MStara давно нет, перекуплен SigmaStar/Mediatek

  2. Прошивку лучше снять с девайса, и выложить на упомянутый http://linux-chenxing.org/ вместе с детальными фотками девайса

  3. Там не совсем u-boot

  4. В ядре ваша борда - это вариация на тему infinity2m - оттуда и плясать в buildroot

  5. В приведенной прошивке есть возможность грузить ядра по tftp - поможет в отладке

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

Там не совсем u-boot

А кто там если он явно при загрузке говорит что это он и есть U-Boot 2015.01 (Feb 15 2022 - 16:27:21)?

В ядре ваша борда - это вариация на тему infinity2m - оттуда и плясать в buildroot

Т.к. это ядро 3+ там лежит dtb файл, который я даже смог вытащить оттуда утилитой. Теперь интересует как правильно его подсунуть новому ядру. Как я описал выше вариант с дописыванием его в конец файла почему-то не сработал.

В приведенной прошивке есть возможность грузить ядра по tftp - поможет в отладке

Подскажите каким образом? Прервать загрузку я не могу.

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

А кто там если он явно при загрузке говорит что это он и есть U-Boot 2015.01 (Feb 15 2022 - 16:27:21)?

А может SBoot, а может MBoot

там лежит dtb файл, который я даже смог вытащить оттуда утилитой.

туда же, на http://linux-chenxing.org/

kindof
()

Скачал отсюда https://github.com/linux-chenxing ядро(тут имеется defconfig под процессоры mstar)

Как оказалось там есть и arch/arm/boot/dts/mstar-infinity2m-ssr621d-tlnvr.dts который как раз под мой процессор, но под другую плату. Но с этим думаю можно разобраться, т.к. имеется dts с родного ядра. Дописав его ядру теперь оно ожило:

##  Booting kernel from Legacy Image at 22000000 ...
   Image Name:   Linux kernel
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3567957 Bytes = 3.4 MiB
   Load Address: 20008000
   Entry Point:  20008000
   Verifying Checksum ... OK
-usb_stop(USB_PORT0)
-usb_stop(USB_PORT1)
   Loading Kernel Image ... OK
using: ATAGSS
atags:0x20000000

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 6.3.0-rc3 (libixur@ubuntu) (arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609, GNU ld (GNU Binutils for Ubuntu) 2.26.1) #13 SMP Mon Apr 24 10:55:11 CDT 2023
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: TP-LINK TL-NVR6108C-B
[    0.000000] printk: bootconsole [earlycon0] enabled
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] OF: reserved mem: node linux,cma compatible matching fail
[    0.000000] BUG: not creating mapping for 0x1f221000 at 0x1f221000 in user region

В последней строке что-то ему не понравилось с адресом UART, но с этим думаю уже можно разобраться. Как минимум отключить Kernel low-level debugging.

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