Уже есть несколько программ последовательного терминала, таких как Putty и minicom, и в последнее время мы сами используем Bootterm. Но не предел. Мартин Лунд(Martin Lund) разработал инструмент ввода-вывода для последовательных устройств на базе Linux.
Мартин обнаружил, что многие из существующих инструментов очень ориентированы на модемы или немного громоздки в использовании, поэтому он разработал tio как более простую альтернативу, уделяющую меньше внимания классическим функциям терминала/модема и больше — потребностям разработчиков встраиваемых систем и хакеров.
Хотя можно собрать tio из исходников…
$ git clone https://github.com/tio/tio
$ meson build
$ meson compile -C build
$ sudo meson install -C build
его намного проще установить как snap-пакет (и вы должны получать обновления автоматически):
$ snap install tio --classic
Посмотрим, какие опции предлагаются с параметром «help»:
tio --help
Usage: /snap/tio/438/usr/bin/tio [<options>] <tty-device|config>
Options:
-b, --baudrate <bps> Baud rate (default: 115200)
-d, --databits 5|6|7|8 Data bits (default: 8)
-f, --flow hard|soft|none Flow control (default: none)
-s, --stopbits 1|2 Stop bits (default: 1)
-p, --parity odd|even|none Parity (default: none)
-o, --output-delay <ms> Output delay (default: 0)
-n, --no-autoconnect Disable automatic connect
-e, --local-echo Enable local echo
-t, --timestamp Enable line timestamp
--timestamp-format <format> Set timestamp format (default: 24hour)
-L, --list-devices List available serial devices
-l, --log Enable log to file
--log-file <filename> Set log filename
--log-strip Strip control characters and escape sequences
-m, --map <flags> Map special characters
-c, --color 0..255|none|list Colorize tio text (default: 15)
-S, --socket <socket> Redirect I/O to socket
-x, --hex-mode Enable hexadecimal mode
-v, --version Display version
-h, --help Display help
Options may be set via configuration file.
In session, press ctrl-t q to quit.
See the man page for more details.
Мы подключили плату USB к TTL, чтобы проверить это:
$ tio -L
/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
Устройство определяется корректно, но не совсем так, как обычно, так как плата подключена к /dev/ttyUSB0:
[10490.292941] usb 1-1: new full-speed USB device number 4 using xhci_hcd
[10490.458456] usb 1-1: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.54
[10490.458466] usb 1-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[10490.458470] usb 1-1: Product: USB2.0-Serial
[10490.542269] usbcore: registered new interface driver usbserial_generic
[10490.542284] usbserial: USB Serial support registered for generic
[10490.544859] usbcore: registered new interface driver ch341
[10490.544919] usbserial: USB Serial support registered for ch341-uart
[10490.544948] ch341 1-1:1.0: ch341-uart converter detected
[10490.557605] usb 1-1: ch341-uart converter now attached to ttyUSB0
В любом случае, мы все еще можем использовать его с платой Khadas VIM4 после установки скорости передачи данных на 921600:
$ tio /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 -b 921600
[11:59:32.534] tio v1.40
[11:59:32.534] Press ctrl-t q to quit
[11:59:32.544] Connected
���T7:BL:055c20;ID:9056601109811D08;FEAT:30F:1FFF0000:B002F:1;POC:CF;RCY:0;OVD:0;DFU:0;SD:2002;eMMC:0;RD-0:0;CHK:0;SCS:0;
Bl2_early_platform_setup: indicates bl2ex flow!
OTP_LIC00 : 0f0300000000ff1f2f000b0000000000
OTP_LIC10 : 008207000001fc000c00001000000300
Нам удалось запустить программу перед загрузкой платы, чтобы получить полный журнал. На самом деле он очень похож на bootterm, включая параметры временных меток:
$ tio /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 -b 921600 -t
[14:09:55.213] tio v1.40
[14:09:55.213] Press ctrl-t q to quit
[14:09:55.223] Connected
[14:09:56.976] T7:BL:055c20;ID:9056601109811D08;FEAT:30F:1FFF0000:B002F:1;POC:CF;RCY:0;OVD:0;DFU:0;SD:2002;eMMC:0;RD-0:0;CHK:0;SCS:0;
[14:09:57.533] Bl2_early_platform_setup: indicates bl2ex flow!
[14:09:57.550] OTP_LIC00 : 0f0300000000ff1f2f000b0000000000
[14:09:57.550] OTP_LIC10 : 008207000001fc000c00001000000300
[14:09:57.551] OTP_LIC20 : ffffffbfffff0700ff80008003000003
[14:09:57.551] OTP_LIC30 : 00000002010000008f03000203000000
[14:09:57.552] TE: 380759
[14:09:57.552] BL2 Built : 09:58:05, Nov 19 2021. t7 griscure-review-sc2-bl2-10272020-2-102-g199647c - jenkins@walle02-sh
[14:09:57.553] Board ID = 5
[14:09:57.553] Set sys clock to 24Mhz
[14:09:57.554] syspll is 1512Mhz. Locked
[14:09:57.554] sys1pll is 1608Mhz. Locked
[14:09:57.554] Set sys clock to 167Mhz
[14:09:57.555] gp0pll is 0Mhz. Locked
[14:09:57.555] bl2_platform_setup
[14:09:57.555] boot area list:
[14:09:57.555] 1STBLOB 00000200 00040000
[14:09:57.556] BL2E 00040200 00013000
[14:09:57.556] BL2X 00053200 00011000
[14:09:57.556] DDRFIP 00064200 00040000
[14:09:57.556] DEVFIP 000a4200 00300000
[14:09:57.557] s_setup from rom:00010081
Однако tio предлагает перенаправление ввода-вывода на сокеты для сценариев или совместного использования TTY, шестнадцатеричный режим и изменение цвета текста.
Также возможно изменить конфигурацию по умолчанию через файл $XDG_CONFIG_HOME/tio/tiorc, $HOME/.config/tio/tiorc или $HOME/.tiorc.
Вы найдете все подробности об инструменте ввода/вывода для последовательных устройств на странице проекта на Github. В качестве примечания: мы не в первый раз пишем об инструментах Мартина с открытым исходным кодом, так как ранее мы рассказывали об инструментальном стандарте LXI, созданном для тестовых инструментов, совместимых с «LAN eXtensions for Instrumentation».
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.