Эквивалент Teraterm linux для передачи двоичного файла на устройство

Я пытаюсь изменить прошивку OpenNFM для домашнего проекта. Я использую плату Olimex LPC H3131. В Windows я компилирую двоичный файл с помощью встроенного рабочего места IAR и использую Teraterm (последовательный порт) для отправки (отправки в виде двоичного файла) двоичного файла на плату. Это настраивает плату на работу в качестве USB-устройства. Как передать двоичный файл на устройство в Linux?

Я использовал миником. Я получаю сообщение «LPC31xx READY FOR PLAIN IMAGE», похожее на Teraterm. Затем я использую «CTRL + A», а затем «S», чтобы отправить файл. Я выбираю «ASCII» на следующем экране и затем ввожу путь к двоичному файлу. Я получаю успешную передачу и сообщение «Загрузка завершена» в minicom. Но потом ничего не происходит. Я даже не получаю вывод (комментарии журнала для отладки), который я получаю при использовании Teraterm, и плата не отображается как USB-накопитель.


person Kevin Lobo    schedule 10.06.2019    source источник


Ответы (1)


Чтобы иметь возможность отправить двоичный файл с помощью minicom как ASCII, вам необходимо сначала закодировать его. Проблема в том, что вам нужно снова декодировать его на принимающей стороне, поэтому я думаю, что вы не можете следовать этому маршруту.

К счастью, вы можете настроить minicom для добавления нового протокола передачи. См. здесь: https://gist.github.com/cstrahan/5796653

Как видите, процедура довольно проста:

1) Сохраните скрипт где-нибудь в вашей системе, например /usr/bin/bin-xfer.sh

2) Дайте ему правильные разрешения: $sudo chmod +x bin-xfer.sh

3) Запустите установку minicom: $sudo minicom -s и выберите в меню протокол передачи файлов

4) Добавьте новую запись, нажав J, дайте имя, например binary, и нажмите Enter, чтобы перейти в следующее меню, затем добавьте командную строку /usr/bin/bin-xfer.sh -o %l и установите другие параметры по ссылке.

5) Сохраните конфигурацию и выйдите из меню настройки.

Затем из minicom вы можете вызвать новое меню, которое вы только что добавили, с помощью CTRL+A+S

РЕДАКТИРОВАТЬ: После самостоятельного тестирования этого решения на Ubuntu 19.04 я понял, что скрипт не работает (поскольку он использует другое определение функции, которое не поддерживается). Но это очень легко исправить, просто измените строку 5 с function exists { на exists() {. Также рекомендуется установить pv с $sudo apt-get install pv, если вы хотите следить за ходом передачи.

В качестве примечания: вам не нужно использовать minicom, вы можете использовать этот скрипт как отдельный инструмент, но для этого вам нужно настроить порт с помощью stty, например:

$ stty -F /dev/ttyUSB0 115200 raw cs8 -ixoff -cstopb -parenb

А затем запустите скрипт с помощью:

$ bin-xfer.sh -i bin_file_to_send -o /dev/ttyUSB0

Я также протестировал этот скрипт на Python, и он также работает и может быть добавлен в меню minicom аналогичным образом. .

person Marcos G.    schedule 10.06.2019
comment
Большое спасибо за быстрый ответ. Я следовал вашим инструкциям. Кажется, что-то еще не так. Не могли бы вы просмотреть скриншоты и сообщить мне, что я сделал не так? imgur.com/Vnmt2HI imgur.com/7AeRcgE imgur.com/NfXHmJX imgur.com/KrEJ6zm imgur.com/ v7uQ71E - person Kevin Lobo; 14.06.2019
comment
Привет, Кевин, пожалуйста. Судя по вашему последнему снимку экрана, вы выбрали опцию ascii в меню (я прочитал загрузку ascii из..., вы можете попробовать еще раз? вы должны увидеть двоичную загрузку... - person Marcos G.; 14.06.2019
comment
Этот снимок экрана должен был показать, что файл отправляется в формате ascii, а не в двоичном формате. Когда я выбираю двоичный файл, запрос просто истекает. imgur.com/eNKXYec Вот что я получаю. как только я выбираю двоичный файл и ввожу путь, я просто возвращаюсь в это командное окно, - person Kevin Lobo; 14.06.2019
comment
Я предполагаю, что это означает, что скрипт не работает. Мне не пришлось проверять это самому, но я сделаю это на выходных и сообщу вам, что найду. - person Marcos G.; 14.06.2019
comment
Привет, Кевин, взгляните на обновление моего ответа, я проверил его, и теперь он работает. - person Marcos G.; 15.06.2019
comment
Я совершенно забыл chmod +x bin-xfr.sh и рвал на себе волосы, пытаясь отправить двоичный файл с помощью minicom. Благослови и спасибо. - person Alexis; 06.06.2020