LINUX.ORG.RU

Embedded linux. Нет сообщений по UART при загрузке

 , ,


0

1

Имеется китайская IP-камера на HI3516CV300. Камера рабочая, но в ней закрыт telnet и ssh. Подключив USB-UART адаптер к плате я наблюдаю лог загрузки U-Boot, могу войти в его командную оболочку. А вот сообщений от ядра или приглашеия логина нет. Как я могу активировать вывод сообщений ядра и залогиниться? Или второй вариант, как включить доступ по telnet или ssh, если я могу слить дамп прошивки?

U-boot log при обычной загрузке

hi3516cv300 System startup

Uncompress.......Ok


hi3516cv300 System startup


U-Boot 2010.06-svn1098 (Jun 11 2018 - 13:18:18)

Check Flash Memory Controller v100 ... Found
SPI Nor(cs 0) ID: 0xef 0x40 0x18
spi_w25q256fv_qe_enable(193): Error: Disable Quad failed! reg:0x2
Block:64KB Chip:16MB Name:"W25Q128(B/F)V"
CONFIG_CLOSE_SPI_8PIN_4IO = y.
at hifmc100_setTB() mid:0xef,chipsize:0x1000000 <no>.
lk[6 => 0x800000]
SPI Nor total size: 16MB
MMC:   
EMMC/MMC/SD controller initialization.
Card did not respond to voltage select!
No EMMC/MMC/SD device found !
In:    serial
Out:   serial
Err:   serial
Press Ctrl+C to stop autoboot
16384 KiB hi_fmc at 0:0 is now current device

srcAddr 0x83000000, dstAddr 0x82000000
created_inode 0x883d0200
find_squashfs_file: name bin, start_block 0, offset 2458, type 1
find_squashfs_file: name boot, start_block 0, offset 2558, type 1
read inode: name boot, sb 0, of 2558, type 1
find_squashfs_file: name uImage, start_block 0, offset 2490, type 2
read inode: name uImage, sb 0, of 2490, type 2
write_file: regular file, blocks 9
len 2222203
### FS load complete: 2222203 bytes loaded to 0x82000000
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-3.18.20
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2222139 Bytes = 2.1 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Loading Kernel Image ... OK
OK

Starting kernel ...

                         


Переменные окружения U-boot

xmtech # printenv
bootargs=init=linuxrc mem=${osmem} console=ttyAMA0,115200 root=/dev/mtdblock1 rootfstype=squashfs mtdparts=hi_sfc:0x30000(boot),0x550000(romfs),0x740000(user),0x180000(web),0x80000(custom),0x140000(mtd)
bootcmd=setenv setargs setenv bootargs ${bootargs};run setargs;sf probe 0;sf read 83000000 30000 550000;squashfsload;bootm 0x82000000
bootdelay=1
baudrate=115200
ipaddr=192.168.1.10
serverip=192.168.1.107
netmask=255.255.255.0
bootfile="uImage"
da=tftp 0x82000000 u-boot.bin.img;sf probe 0;flwrite
du=tftp 0x82000000 user-x.cramfs.img;sf probe 0;flwrite
dr=tftp 0x82000000 romfs-x.cramfs.img;sf probe 0;flwrite
dw=tftp 0x82000000 web-x.cramfs.img;sf probe 0;flwrite
dl=tftp 0x82000000 logo-x.cramfs.img;sf probe 0;flwrite
dc=tftp 0x82000000 custom-x.cramfs.img;sf probe 0;flwrite
up=tftp 0x82000000 update.img;sf probe 0;flwrite
ua=mw.b 0x82000000 ff 1000000;tftp 0x82000000 upall_verify.img;sf probe 0;flwrite
tk=tftp 0x82000000 uImage;setenv setargs setenv bootargs ${bootargs};run setargs;bootm 0x82000000
dd=mw.b 0x82000000 ff 1000000;tftp 0x82000000 mtd-x.jffs2.img;sf probe 0;flwrite
ethaddr=00:12:17:f7:d3:8a
NID=0x0001
muxctl0=0x12040064
muxval0=0x0
gpio0=0x77
gpioval0=0x00
muxctl1=0x12040104
muxval1=0x00
gpio1=0x82
gpioval1=0x04
osmem=56M
appVideoStandard=PAL
appNetIP=0xFE1FA8C00x00FFFFFF0x011FA8C0
appCloudExAbility=fgNP3bCbO90=
appSystemLanguage=English
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06-svn1098 (Jun 11 2018 - 13:18:18)

Environment size: 1473/65532 bytes

На моём arm'e консоль таки на ttyS0. Попробуй порт поменяй.

Или второй вариант, как включить доступ по telnet или ssh, если я могу слить дамп прошивки?

Никак.

UVV ★★★★★ ()

Как я могу активировать вывод сообщений ядра и залогиниться?

перекомпилировать ядро с правильными параметрами

Harald ★★★★★ ()

из uboot, что-то типа

sf probe; sf read 0x83000000 0x0 0x1000000
tftp 0x83000000 dump.bin 0x1000000

выставить свои настройки ip не забыть и поднять tftp сервер на своем serverip

вообще это xm, легко найти прошивку, которая элементарно разбирается

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

вообще это xm, легко найти прошивку, которая элементарно разбирается

Не хватает знаний. Я пока слил два раздела (rootfs и user). Подмонтировал, смотрю что там как. Нашёл в /etc/inittab строку:

# Example of how to put a getty on a serial line (for a terminal)
::respawn:/sbin/getty -L ttyS000 115200 vt100 -n root -I "Auto login as root ..."
#::respawn:/sbin/getty -L ttyS1 9600 vt100
Заменил переменную окружения bootargs
xmtech # setenv bootargs 'init=linuxrc mem=${osmem} console=ttyS000,115200 root=/dev/mtdblock1 rootfstype=squashfs mtdparts=hi_sfc:0x30000(boot),0x550000(romfs),0x740000(user),0x180000(web),0x80000(custom)'
xmtech # print bootargs
bootargs=init=linuxrc mem=${osmem} console=ttyS000,115200 root=/dev/mtdblock1 rootfstype=squashfs mtdparts=hi_sfc:0x30000(boot),0x550000(romfs),0x740000(user),0x180000(web),0x80000(custom)
Загружаю и не вижу результата. Похоже, она ещё и перезагрузилась.
xmtech # run bootcmd
16384 KiB hi_fmc at 0:0 is now current device

srcAddr 0x83000000, dstAddr 0x82000000
created_inode 0x883d0200
find_squashfs_file: name bin, start_block 0, offset 2458, type 1
find_squashfs_file: name boot, start_block 0, offset 2558, type 1
read inode: name boot, sb 0, of 2558, type 1
find_squashfs_file: name uImage, start_block 0, offset 2490, type 2
read inode: name uImage, sb 0, of 2490, type 2
write_file: regular file, blocks 9
len 2222203
### FS load complete: 2222203 bytes loaded to 0x82000000
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-3.18.20
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2222139 Bytes = 2.1 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Loading Kernel Image ... OK
OK

Starting kernel ...

                         


hi3516cv300 System startup

Uncompress.......Ok


hi3516cv300 System startup


U-Boot 2010.06-svn1098 (Jun 11 2018 - 13:18:18)

Check Flash Memory Controller v100 ... Found
SPI Nor(cs 0) ID: 0xef 0x40 0x18
spi_w25q256fv_qe_enable(193): Error: Disable Quad failed! reg:0x2
Block:64KB Chip:16MB Name:"W25Q128(B/F)V"
CONFIG_CLOSE_SPI_8PIN_4IO = y.
at hifmc100_setTB() mid:0xef,chipsize:0x1000000 <no>.
unlock all.
SPI Nor total size: 16MB
MMC:   
EMMC/MMC/SD controller initialization.
Card did not respond to voltage select!
No EMMC/MMC/SD device found !
In:    serial
Out:   serial
Err:   serial
Press Ctrl+C to stop autoboot
16384 KiB hi_fmc at 0:0 is now current device

srcAddr 0x83000000, dstAddr 0x82000000
created_inode 0x883d0200
find_squashfs_file: name bin, start_block 0, offset 2458, type 1
find_squashfs_file: name boot, start_block 0, offset 2558, type 1
read inode: name boot, sb 0, of 2558, type 1
find_squashfs_file: name uImage, start_block 0, offset 2490, type 2
read inode: name uImage, sb 0, of 2490, type 2
write_file: regular file, blocks 9
len 2222203
### FS load complete: 2222203 bytes loaded to 0x82000000
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-3.18.20
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2222139 Bytes = 2.1 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Loading Kernel Image ... OK
OK

Starting kernel ...

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

чот mtd откусил, зачем? попробуй ttyAMA0 ну и вообще inittab работает?

попробуй init=/bin/sh для ядра и второй вариант, собери маленький utelnetd и подоткни в автозагрузку с параметрами типа -p 2323 -l /bin/sh

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

mtd отпал, потому что копировал из minicom. Поэтому, наверно, система и ресетнулась. Повторил задать в bootargs console=ttyS000,115200, но всё та же тишина. Буду пробовать вариант с распаковкой-упаковкой rootfs и добавлением utelnetd. Спасибо за советы, потом отпишусь.

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

В /etc/init.d есть файлы dnode и rcS.

Содержимое dnode

#!/bin/sh

/bin/mount -a

mknod /dev/console c 5 1
mknod /dev/ttyAMA0 c 204 64
mknod /dev/ttyAMA1 c 204 65
mknod /dev/ttyS000 c 204 64
mknod /dev/null	   c 1 3

mkdir /dev/pts
mount -t devpts devpts /dev/pts
Я правильно понимаю, что /dev/ttyAMA0 и /dev/ttyS000 это одно и тоже физическое устройство? И что делает mount -t devpts devpts /dev/pts ?

ramon13666 ★★★ ()

Возможно, консоль на UART у тебя работает, только на другой скорости. Можешь попробовать подключить несколько USB-UART параллельно, настроив каждый на свою скорость.

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

несколько USB-UART параллельно

[ТСу] Купи простейший логический анализатор, раз начал с электроникой копаться, даже самый кривой клон очень помогает.

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

Анализатор говорит, что всё заканчивается словами «Starting kernel ... \r\n\r\n»

ramon13666 ★★★ ()

Скомпилировал utelnetd, забросил его в /bin/, дописал в конец inittab следующее:

# Start utelnetd 
::respawn:/bin/utelnetd -p 2323 -l /bin/sh
Пытаюсь подключиться
telnet 192.168.31.254 2323
Trying 192.168.31.254...
telnet: Unable to connect to remote host: Connection refused
Права на файл utelnetd и busybox из слитой прошивки и их свойства
[roman@T460 bin]$ ls -l utelnetd 
-rwxr-xr-x 1 roman roman 12360 июл 11 18:41 utelnetd
[roman@T460 bin]$ binwalk utelnetd 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             ELF, 32-bit LSB executable, ARM, version 1 (SYSV)

[roman@T460 bin]$ binwalk busybox 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             ELF, 32-bit LSB executable, ARM, version 1 (SYSV)
307318        0x4B076         Copyright string: "Copyright (C) 1998-2011 Erik Andersen, Rob Landley, Denys Vlasenko"
315210        0x4CF4A         Unix path: /usr/share/udhcpc/default.script
326424        0x4FB18         POSIX tar archive, owner user name: "e age file exists", owner group name: "ate %slink from %s to %s"

[roman@T460 bin]$ file utelnetd 
utelnetd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
[roman@T460 bin]$ file busybox 
busybox: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
[roman@T460 bin]$ 
Также, в inittab изменил определение последовательного терминала, сделал их два. Но сообщений всё равно не вижу. Да и логический анализатор показывает, что там глухо.
::respawn:/sbin/getty -L ttyAMA0 115200 vt100 -n root -I "Auto login as root ..."
::respawn:/sbin/getty -L ttyAMA1 115200 vt100 -n root -I "Auto login as root ..."

ramon13666 ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.