загрузчик U-boot и сериальная отладка

встраиваемые модели

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузчик U-boot и сериальная отладка

Непрочитанное сообщение Olej » 12 июн 2018, 16:12

Olej писал(а): Или / И :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 символов, русскими буквами (каракули на 1-м экране).
Но это может у меня не получается. :-(

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузчик U-boot и сериальная отладка

Непрочитанное сообщение Olej » 12 июн 2018, 16:19

Olej писал(а):Но это может у меня не получается.
И ещё что не получается, как в 1-м, так и во 2-м случае, так это завершить сессию minicom/screen в окне терминала инструментального Linux.
Только по kill или killall из соседнего терминала!
Это не так важно ... но достаёт. ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузчик U-boot и сериальная отладка

Непрочитанное сообщение Olej » 16 июн 2018, 16:33

Olej писал(а):И ещё что не получается, как в 1-м, так и во 2-м случае, так это завершить сессию minicom/screen в окне терминала инструментального Linux.
Только по kill или killall из соседнего терминала!
Это не так важно ... но достаёт. ;-)
Так, ... с убиением экрана и сессии screen разобрался (с minicom там что-то даже помнится ... нечто подобное): через команды управления CTRL+a <команда>.
Почти всё, что набирается в окне терминала screen, передаётся в подключенную (дочернюю) систему: Ctrl+C, Ctrl+D ... Можно на приёмном конце подключить что-то (приёмную программу), которая по Ctrl+C, например, будет завершать сессию, логин (проверил что это работает и сделать легко).
Но специально для управления поведением самого screen - они не передаются по линии связи: Ctrl+a <управляющий символ команды>.
Например, CTRL+a с - создать новое, ещё одно окно терминала.
Команд разных достаточно много (смотри man).

Мне не нужны новые окна scree в терминальном окне: CTRL+a с
Поэтому для единственного отладочного сеанса одинаково - что убиение текущего экрана (kill) CTRL+a k, что убиение сессии (quit) CTRL+a \

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

Но вот ещё вопрос: как залогировать тот вывод, что получал screen? Прокрутка графического терминала, в котором запускается screen, в этом случае не работает - вывод очень быстро уходит за границы экрана. :(
Хотелось бы не только наблюдать вывод с экрана, но и сбросить вывод в файл, и потом позже его подробно разбирать.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузчик U-boot и сериальная отладка

Непрочитанное сообщение Olej » 16 июн 2018, 16:45

Olej писал(а):Хотелось бы не только наблюдать вывод с экрана, но и сбросить вывод в файл, и потом позже его подробно разбирать.
Всё ... разобрался как логинить загрузку U-boot а далее и Linux, чтобы потом, по свободе, можно было его анализировать:

1. Запускаю screen

Код: Выделить всё

olej@nvidia ~/2018_WORK/own.WORKs/RTLinux/Orange_Pi $ screen /dev/ttyUSB0 115200
2. Включаю в screen логирование экрана: CTRL+a H ... теперь он готов принимать данные и логировать...

3. Только теперь (после готовности screen, вырубаю подключенный SBS по питанию и снова врубаю ... или с терминала, или по SSH: sudo reboot ... - пошла перезагрузка, начиная с U-boot и его вывода на UART

4. После того, как загрузка завершена + получаю приглашение login ... могу поработать в Linux, если захочу...

5. Завершаю сессию screen командой отключения: CTRL+a \ ... чтоб он всё закрыл (файлы) и сохранил ... (ни в коем разе не kill!)

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

6. но можно более комфортно просматривать лог в терминале (с прокруткой и все удобства):

Код: Выделить всё

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)!
...
(прикреплённый для ознакомления файл переименован из screen.0 в screen.txt - только для того, что форум не позволит прицепить файл с неразрешённым расширением .txt)
Вложения
screenlog.txt
(15.68 КБ) 159 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузчик U-boot и сериальная отладка

Непрочитанное сообщение Olej » 21 янв 2021, 16:26

В большом разработческом проекте возник такой затык при доступе к embedded оборудованию для отладки программ:
- в embedded работает Linux:

Код: Выделить всё

# uname -a
Linux (none) 3.14.28-1.14 #2 SMP Wed Nov 11 19:21:28 UTC 2020 armv7l GNU/Linux
- над ним работает серверный софт проекта, гонящий непрерывно поток диагностики
- нужно передавать в embedded клавиатурную комбинацию Ctrl+C для прерывания собственного софта ... да и для перехода к перезагрузке Linux если что пошло не так, или даже на перезагрузки прервать её (в первые 3 секунды) и зайти в начальный загрузчик для перезаписи пути загружаемого образа Linux:
- переписываем:

Код: Выделить всё

BOLT> setenv -p STARTUP "ifconfig eth1 -auto; boot 10.15.1.100:humaxwb20/Olej/PCI_Spectrum110-H_chr_1143_508FFFFF_20201113_SLG.vmlinuz_initrd"
*** command status = 0
- проверяем:

Код: Выделить всё

BOLT> printenv
Variable Name        Value
-------------------- --------------------------------------------------
        BOOT_CONSOLE uart0
              SPLASH ENABLE
                  F4 ifconfig -auto eth1; boot 10.15.1.100:humaxwb20/ssokolov_initrd
                  F7 ifconfig eth1 -auto; boot 10.15.1.100:humaxwb20/iskander/PCI_
                  F6 ifconfig -auto eth1; boot 10.15.1.100:humaxwb20/ssokolov_initrd
             VERSION 1.18
            BUILDTAG v1.18
      CHIP_FAMILY_ID 72500010
           BOARDNAME WB2_V0_09
            ETH0_PHY RGMII
      ETH0_MDIO_MODE 0
          ETH0_SPEED 1000
        ETH0_PHYADDR 0
          MEMORYSIZE 2048
          DT_ADDRESS 7856000
             DT_SIZE 9d6e
         ETH0_HWADDR 34:38:B7:EB:2E:34
             STARTUP ifconfig eth1 -auto; boot 10.15.1.100:humaxwb20/Olej/PCI_Spectrum110-H_chr_1143_508FFFFF_20201113_SLG.vmlinuz_initrd
*** command status = 0
- перезагружаем ... но уже свой перезаписанный образ:

Код: Выделить всё

BOLT> reboot
...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузчик U-boot и сериальная отладка

Непрочитанное сообщение Olej » 21 янв 2021, 16:33

Olej писал(а):
21 янв 2021, 16:26
- нужно передавать в embedded клавиатурную комбинацию Ctrl+C для прерывания
Фокус в том, что и в minicim и в screen эта комбинация при дефаултных настройках не передаётся по линии. :-(

А для того чтобы это было - нужно (как пишут) запретить Hardware Flow Control.

Не вдаваясь в теорию и дебри ;-) ... в screen я делаю это командой с опцией:

Код: Выделить всё

oleg.tsiliuric@com-ts-00:~$ screen -fn /dev/stb/tmc9_4 115200
#
...

И мы уже там. :lol:

P.S. Хотя почти наверняка это можно настроить в конфигурациях screen ... но зачем, если я постоянно повторяю (копированием) одну и ту же команду!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузчик U-boot и сериальная отладка

Непрочитанное сообщение Olej » 21 янв 2021, 16:47

Olej писал(а):
21 янв 2021, 16:33
в screen я делаю это командой с опцией
А вот с minicom, как оказалось, сложнее - здесь нужно зайти в настройки программы, установить, и сохранить как дефаулт.
По конфигурированию и использованию minicom есть такая вот неплохая маленькая заметка (она тем и неплохая, что маленькая :lol: ) - Не Putty единым. Использование minicom в Linux
Monday, July 8, 2013
А в нАтуре требуемое мне действие выглядит так:

1. захожу в конфигурации:

Код: Выделить всё

oleg.tsiliuric@com-ts-00:~$ minicom -s
[code]
           +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            +--------------------------+
P.S. Точно в то же место можно попасть и из рабочего, "боевого" запуска minicom:

Код: Выделить всё

oleg.tsiliuric@com-ts-00:~$ minicom -D /dev/stb/tmc9_9

Welcome to minicom 2.7

OPTIONS: I18n
Compiled on Nov 15 2018, 20:20:04.
Port /dev/stb/tmc9_9, 22:59:28

Press CTRL-A Z for help on special keys
- после CTRL-A Z:

Код: Выделить всё

                                      +-------------------------------------------------------------------+
                                      |                                                                   |
                                      |                       Minicom Command Summary                     |
                                      |                                                                   |
                                      |              Commands can be called by CTRL-A <key>               |
                                      |                                                                   |
                                      |               Main Functions                  Other Functions     |
                                      |                                                                   |
                                      | Dialing directory..D  run script (Go)....G | Clear Screen.......C |
                                      | Send files.........S  Receive files......R | cOnfigure Minicom..O |
                                      | comm Parameters....P  Add linefeed.......A | Suspend minicom....J |
                                      | Capture on/off.....L  Hangup.............H | eXit and reset.....X |
                                      | send break.........F  initialize Modem...M | Quit with no reset.Q |
                                      | Terminal settings..T  run Kermit.........K | Cursor key mode....I |
                                      | lineWrap on/off....W  local Echo on/off..E | Help screen........Z |
                                      | Paste file.........Y  Timestamp toggle...N | scroll Back........B |
                                      | Add Carriage Ret...U                                              |
                                      |                                                                   |
                                      |             Select function or press Enter for none.              |
                                      +-------------------------------------------------------------------+

- после O попадаем в то же место конфигурации:

Код: Выделить всё

            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            +--------------------------+
P.S. Все клавиатурные комбинации можно жать на нижнем регистре, малыми буквами ... но следите чтобы были переключены в английскую раскладку.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузчик U-boot и сериальная отладка

Непрочитанное сообщение Olej » 21 янв 2021, 16:53

Olej писал(а):
21 янв 2021, 16:47
попадаем в то же место конфигурации
2. выбираю: Serial port setup

Код: Выделить всё

    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/stb/tmc9_9                           |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : No                                        |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
3. выбираем F - Hardware Flow Control - при выборе он меняет значение (выше показано уже изменённое значение, по умолчанию оно ON);

4. изменив этот выбор (Change which setting) возвращаемся в предыдущее меню...

5. где выбираем: Save setup as dfl
Теперь это дефаултное значение нашего minicom, и при стартах он будет стартовать именно с такими установками:

Код: Выделить всё

oleg.tsiliuric@com-ts-00:~$ minicom -D /dev/stb/tmc9_4

Welcome to minicom 2.7

OPTIONS: I18n
Compiled on Nov 15 2018, 20:20:04.
Port /dev/stb/tmc9_4, 15:46:12

Press CTRL-A Z for help on special keys

#
...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузчик U-boot и сериальная отладка

Непрочитанное сообщение Olej » 03 фев 2021, 17:39

Olej писал(а):
21 янв 2021, 16:26
для перехода к перезагрузке Linux если что пошло не так, или даже на перезагрузки прервать её (в первые 3 секунды) и зайти в начальный загрузчик для перезаписи пути загружаемого образа Linux
Различие screen и minicom (при подключении к embedded serial) проявляется ещё в том (и иногда очень неприятно), что у minicom терминала остаётся работать прокрутка терминала, а у screen - нет, и это "нет" может быть очень неприятно при просмотре всяких длинных HELP ... например начального загрузчика:

Код: Выделить всё

BOLT> help
Available commands:

autoboot .......... Autoboot
backupdri ......... Backupdri
batch ............. Load a batch file into memory and execute it
blink ............. Blink
boards ............ Show supported boards
boot .............. Load an executable file into memory and execute it
crc ............... Report the CRC32 for a memory range.
crypto_test ....... RSA signature checking test.
currentbank ....... CurrentBank
d ................. Dump memory.
dir ............... List the directory of a FAT file system
dt phandle ........ Get or set the phandle associated with an existing
                    node
dt on ............. (Re-)enable the silent 'dt bolt' command that
                    happens just before the 'boot' command executes.
dt off ............ Disable the silent 'dt bolt' command that happens
                    just before the 'boot' command executes.
dt bolt ........... Modify an existing DTB with an autogenerated BOLT
                    config. The DT_ADDRESS envar is used as the base
                    address of the dtb.
dt memreserve ..... Add an entry to the DTB memory reservation table.
                    The address and length shall be specified in hex.
                    The DT_ADDRESS envar is used as the base address of
                    the dtb.
...
... и так ещё 1-2 экрана.

Ответить

Вернуться в «Одноплатные компьютеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя