Автор Тема: отладочная консоль (UART)  (Прочитано 81 раз)

Оффлайн Olej

отладочная консоль (UART)
« : Июнь 12, 2018, 03:44:45 pm »
Вопрос переплыл отсюда, с обсуждений загрузчика U-boot ... но он сам по себе интереснее U-boot!
Просто эти 3 штырька торчат особняком, впритык к сетевому RG-45, не обозначены, и в большинстве описаний OPi One, почему то ???, вообще не упоминаются:

Попутно рассмотрел с терминал (SSH) что там делается в Armbian относительно терминальных линий...
root@orangepione:~# ls -l /dev/tty* | wc -l
329
Такого числа tty я ни в одном Linux не видел. Что это ... такие имена как /dev/ttyze и т.п.??? :o
Но:
root@orangepione:~# stty < /dev/ttyS0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel iutf8
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
И что-то мне подсказывает, что это именно и есть отладочный сериальный порт. ;)
Чтобы не похоронить сериальную консоль под U-boot, выношу эту тему сюда.

Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #1 : Июнь 12, 2018, 03:46:14 pm »
Чтобы не похоронить сериальную консоль под U-boot, выношу эту тему сюда.
паяльник не нужен, три проводочка к debug ttl uart, хотя на плате Orange Pi One debug ttl uart вроде не разведён.
Нашёл/заказал вот такое чудо за 19,89 грн.
Адаптер USB COM RS232 TTL PL2303 Arduino


P.S. Поражает размах воображения ;D продавцов USB/UART конверторов - цены до 245 грн.

Но нашёл/заказал ещё и вот такой конвертер с кабелем (с конвертерами-платками я когда-то сталкивался, а вот такое чудо вижу впервые ... новинка?):

Тоже можно найти по цене 45 грн. ... а можно и за 100  >:(

Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #2 : Июнь 12, 2018, 03:47:38 pm »
Цитата: Olej
Но нашёл/заказал ещё и вот такой конвертер с кабелем (с конвертерами-платками я когда-то сталкивался, а вот такое чудо вижу впервые ... новинка?):
Сегодня получил это чудо.
Единственный минус - никакого сопроводительного описания на него, конечно, нет, а его 4 шнурка UART - никак не подписаны, естественно. :-?
Называется это чудо у продавцов так: "USB-UART конвертер PL2303HX/CH340G в корпусе с кабелем", а распиновка по цвету проводов (если не врут ;-) ) - так:

Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #3 : Июнь 12, 2018, 03:49:19 pm »
Пишут: 5 Распиновка Orange Pi One & Lite
Цитировать
5.1 GPIO — 40 Выводов общего назначения
5.2 CSI — Разъем камеры
5.3 UART отладочный вывод
...

1   GND
2   RX
3   TX
Просто эти 3 штырька торчат особняком, впритык к сетевому RG-45, не обозначены, и в большинстве описаний OPi One, почему то ???, вообще не упоминаются:


Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #4 : Июнь 12, 2018, 03:50:42 pm »
Цитата: Olej
Цитировать
5.3 UART отладочный вывод
...

1   GND
2   RX
3   TX
Проверяю подключение соединения со стороны UART (SoC)...
И, конечно, как всегда - для начала ошибся.
Потому как:

1. Картинка выше - "вывернута наизнанку", этот разъём UART и увидеть нельзя в такой ориентации (слева-направо), его закрывает RG-45 ... или только можно, но с тыльной стороны, со стороны печатной платы. А нам нужны штырьки для подключения, которые слева-направо выглядят так: TX - RX - GND - так как на 2-й картинке:


2. Но на этой 2-й картинке штырьки подписаны с точки зрения функционального назначения SoC. А нам кабель UART нужно подключить перекрёстно, поменяв TX - RX относительно того, что на картинке, с точностью до наоборот...

3. В итоге, подключение штырьков - слева-направо:
3 - белый (со стороны края платы, TX SoC)
2 - зелёный
1 - чёрный

Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #5 : Июнь 12, 2018, 03:52:12 pm »
Цитата: Olej
3. В итоге, подключение штырьков - слева-направо:
3 - белый (со стороны края платы, TX SoC)
2 - зелёный
1 - чёрный
Теперь можно проверять соединение...

Со стороны Orange Pi:
root@orangepione:~# stty < /dev/ttyS0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel iutf8
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

Со стороны десктопа Linux:
nvidia ~ # stty -F/dev/ttyUSB0 -a
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
Подгоняем скорость:
nvidia ~ # stty -F/dev/ttyUSB0 115200

nvidia ~ # stty -F/dev/ttyUSB0 -a
speed 115200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
Подгонять скорость нужно при каждом размыкании-соединении кабеля, т.к. устройство /dev/ttyUSB0 создаётся заново со своими дефаултными характеристиками.

Передача со стороны десктопа:
nvidia ~ # echo 12345 > /dev/ttyUSB0
Со стороны Orange Pi видим:
root@orangepione:~# cat /dev/ttyS0
12345
^C
Всё путём ;-) - соединение ОК.

Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #6 : Июнь 12, 2018, 04:01:06 pm »
Всё путём ;-) - соединение ОК.
Для работы с сериальной консолью можно использовать любой монитор последовательной линии ... а их миллион.
Если не установлен - можете установить дополнительно:
olej@nvidia ~/2018_WORK/Bilety/06.14_malevich $ apt install minicom
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Рекомендуемые пакеты:
  lrzsz
НОВЫЕ пакеты, которые будут установлены:
  minicom
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 232 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 928 kB.
Пол:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 minicom amd64 2.7-1build1 [232 kB]
Получено 232 kБ за 0с (328 kБ/c)
Выбор ранее не выбранного пакета minicom.
(Чтение базы данных … на данный момент установлено 468685 файлов и каталогов.)
Подготовка к распаковке …/minicom_2.7-1build1_amd64.deb …
Распаковывается minicom (2.7-1build1) …
Обрабатываются триггеры для man-db (2.7.5-1) …
Настраивается пакет minicom (2.7-1build1) …
Или / И  :D
olej@nvidia ~/2018_WORK/Bilety/06.14_malevich $ apt install screen
[sudo] пароль для olej:
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Предлагаемые пакеты:
  iselect | screenie | byobu ncurses-term
НОВЫЕ пакеты, которые будут установлены:
  screen
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 560 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 972 kB.
Пол:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 screen amd64 4.3.1-2build1 [560 kB]
Получено 560 kБ за 0с (830 kБ/c)
Выбор ранее не выбранного пакета screen.
(Чтение базы данных … на данный момент установлено 468626 файлов и каталогов.)
Подготовка к распаковке …/screen_4.3.1-2build1_amd64.deb …
Распаковывается screen (4.3.1-2build1) …
Обрабатываются триггеры для systemd (229-4ubuntu21.2) …
Обрабатываются триггеры для ureadahead (0.100.0-19) …
ureadahead will be reprofiled on next reboot
Обрабатываются триггеры для install-info (6.1.0.dfsg.1-5) …
Обрабатываются триггеры для man-db (2.7.5-1) …
Настраивается пакет screen (4.3.1-2build1) …
Обрабатываются триггеры для systemd (229-4ubuntu21.2) …
Обрабатываются триггеры для ureadahead (0.100.0-19) …
И др.

Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #7 : Июнь 12, 2018, 04:09:15 pm »
Или / И  :D
В чём разница:
olej@nvidia ~ $ minicom -D -8 -Ll /dev/ttyUSB0 


Добро пожаловать в minicom 2.7

ПАРАМЕТРЫ: I18n
Дата компиляции Feb  7 2016, 13:37:27.
Port /dev/ttyUSB0, 15:18:08

Нажмите CTRL-A Z для получения подсказки по клавишам


Debian GNU/Linux 9 orangepione ttyS0

orangepione login: olej
Password:
Last login: �.�. ���.�� 12 15:17:24 EEST 2018 on ttyS0
  ___                               ____  _    ___             
 / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_)  / _ \ _ __   ___
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | | | | '_ \ / _ \
| |_| | | | (_| | | | | (_| |  __/ |  __/| | | |_| | | | |  __/
 \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_|  \___/|_| |_|\___|
                       |___/                                   

Welcome to ARMBIAN 5.38 stable Debian GNU/Linux 9 (stretch) 4.14.48-sunxi   
System load:   0.00 0.00 0.00   Up time:       1 day            Local users:   11           
Memory usage:  17 % of 493MB    IP:            192.168.1.201
CPU temp:      41��C           
Usage of /:    91% of 1.7G   


olej@orangepione:~$ pwd
/home/olej
olej@orangepione:~$ ls
armbian.build  audio  gpio.tst  WiringOP  �.�.�.�����.������_����欥.
olej@orangepione:~$ exit
logout

Debian GNU/Linux 9 orangepione ttyS0

orangepione login:
olej@nvidia ~ $ screen /dev/ttyUSB0 115200
Debian GNU/Linux 9 orangepione ttyS0

orangepione login: olej
Password:
Last login: Вт июн 12 15:22:40 EEST 2018 on ttyS0
  ___                               ____  _    ___             
 / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_)  / _ \ _ __   ___
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | | | | '_ \ / _ \
| |_| | | | (_| | | | | (_| |  __/ |  __/| | | |_| | | | |  __/
 \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_|  \___/|_| |_|\___|
                       |___/                                   

Welcome to ARMBIAN 5.38 stable Debian GNU/Linux 9 (stretch) 4.14.48-sunxi   
System load:   0.00 0.00 0.00   Up time:       1 day            Local users:   11               
Memory usage:  17 % of 493MB    IP:            192.168.1.201
CPU temp:      40°C             
Usage of /:    91% of 1.7G     


olej@orangepione:~$ pwd
/home/olej
olej@orangepione:~$ ls
armbian.build  audio  gpio.tst  WiringOP  русское_имя
olej@orangepione:~$ exit
logout

Debian GNU/Linux 9 orangepione ttyS0

orangepione login:
minicom - это очень старая-добрая программа из самых ранних UNIX ... но именно поэтому у меня не получается научить её работать с потоком UTF-8 Unicode символов, русскими буквами.
Но это может у меня не получается. ;D

Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #8 : Июнь 12, 2018, 04:20:54 pm »
Но это может у меня не получается. ;D
И ещё что не получается, как в 1-м, так и во 2-м случае, так это завершить сессию minicom/screen в окне терминала инструментального Linux.
Только по kill или killall из соседнего терминала!
Это не так важно ... но достаёт.  :D

Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #9 : Июнь 13, 2018, 05:25:12 pm »
Только по kill или killall из соседнего терминала!
Это не так важно ... но достаёт.  :D
Так, с убиением экрана и сессии screen разобрался - через команды: CTRL+a <команда>
Мне не нужны новые окна scree в терминальном окне: CTRL+a с
Поэтому для отладочного сеанса одинаково что убиение текущего экрана (kill) CTRL+a k, что убиение сессии (quit) CTRL+a \

screen - типично консольная команда, текстовой консоли, не для графического терминала в DE, поэтому у неё такое "заумное" управление возможностями ... которые для моих целей не нужны.
Но с minicom - та же история.

Вот ещё вопрос: как залогировать тот вывод, что получал screen? Прокрутка графического терминала, в котором запускается screen, в этом случае не работает - вывод очень быстро уходит за границы экрана. :(
« Последнее редактирование: Июнь 13, 2018, 05:31:33 pm от Olej »

Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #10 : Июнь 13, 2018, 05:50:46 pm »
Вот ещё вопрос: как залогировать тот вывод, что получал screen? Прокрутка графического терминала, в котором запускается screen, в этом случае не работает - вывод очень быстро уходит за границы экрана. :(
Всё ... разобрался как логинить загрузку U-boot а далее и Linux, чтобы потом, по свободе, можно было его анализировать:

1. Запускаю screen
olej@nvidia ~/2018_WORK/own.WORKs/RTLinux/Orange_Pi $ screen /dev/ttyUSB0 115200

2. Включаю в screen логирование экрана: CTRL+a H ... теперь он готов принимать ...

3. вырубаю OPi по питанию и снова врубаю ... или с терминала, или по SSH: sudo reboot ...

4. после того, как загрузка завершена + получаю приглашение login - завершаю сессию screen: CTRL+a \ ... чтоб он всё закрыл и сохранил ...

В текущем каталоге имею файл screenlog.0 , который и содержит текстовый протокол загрузки ... слегка подгаженный Esc-последовательностями переключения цвета, да в виндовузном стиле ^M в конце строки...

5. но можно более комфортно просматривать лог в терминале (с прокруткой и все удобства):
olej@nvidia ~/2018_WORK/own.WORKs/RTLinux/Orange_Pi $ cat screenlog.0

Оффлайн Olej

Re: отладочная консоль (UART)
« Ответ #11 : Июнь 16, 2018, 04:46:55 pm »
5. но можно более комфортно просматривать лог в терминале (с прокруткой и все удобства):
olej@nvidia ~/2018_WORK/own.WORKs/RTLinux/Orange_Pi $ cat screenlog.0
...
U-Boot SPL 2017.11-armbian (Jun 06 2018 - 14:35:28)
DRAM: 512 MiB
Trying to boot from MMC1


U-Boot 2017.11-armbian (Jun 06 2018 - 14:35:28 +0300) Allwinner Technology

CPU:   Allwinner H3 (SUN8I 1680)
Model: Xunlong Orange Pi One
DRAM:  512 MiB
MMC:   SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   vidconsole
Err:   vidconsole
Net:   phy interface0
eth0: ethernet@1c30000
starting USB...
USB0:   USB EHCI 1.00
USB1:   USB OHCI 1.0
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 1 for devices... 4 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
Autoboot in 1 seconds, press <Space> to stop
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
3708 bytes read in 205 ms (17.6 KiB/s)
## Executing script at 43100000
U-boot loaded from SD
Boot script loaded from mmc
201 bytes read in 165 ms (1000 Bytes/s)
5099142 bytes read in 545 ms (8.9 MiB/s)
6976256 bytes read in 634 ms (10.5 MiB/s)
Found mainline kernel configuration
32002 bytes read in 1374 ms (22.5 KiB/s)
4179 bytes read in 844 ms (3.9 KiB/s)
Applying kernel provided DT fixup script (sun8i-h3-fixup.scr)
## Executing script at 44000000
## Loading init Ramdisk from Legacy Image at 43300000 ...
   Image Name:   uInitrd
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    5099078 Bytes = 4.9 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 43000000
   Booting using the fdt blob at 0x43000000
   Loading Ramdisk to 49b23000, end 49fffe46 ... OK
   reserving fdt memory region: addr=43000000 size=6e000
   Loading Device Tree to 49ab2000, end 49b22fff ... OK
Cannot setup simplefb: node not found

Starting kernel ...

Loading, please wait...
starting version 232
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.29.2
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
/dev/mmcblk0p1: clean, 40345/108192 files, 385581/435712 blocks
done.
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.

Welcome to Debian GNU/Linux 9 (stretch)!
...