Журнал Эмбеддед-Инженера

Работа из под линукса с UART-портом

Настройка окружения

Выясняем какие USB-to-COM преобразователи доступны в системе:

ls -l /dev/ttyU*

Настройка прав доступа из под обычного пользователя:

sudo chmod a+rwx /dev/ttyUSBx

либо пользуемся механизмом udev, для чего нам понадобится положить по пути /etc/udev/rules.d файл такого содержания (с расширением *.rules):

SUBSYSTEMS=="usb", ATTRS{idProduct}=="ea60", ATTRS{idVendor}=="10c4", SYMLINK+="cp2102_%n", MODE="0666", GROUP="plugdev"
SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="ft232r_$attr{serial}", MODE="0666"

— в примере прописаны  VID&PID микросхем-преобразователей FT232R и СР2102. После сохранения файла необходимо добавить пользователя в группу plugdev (если он еще не добавлен):

sudo usermod -a -G plugdev [username]

И перезачитать содержимое правил в директории /etc/udev/rules.d:

sudo udevadm control --reload-rules

Узнать VID:PID произвольного донгла USB-to-UART можно, используя команду lsusb:

lsusb | cut -d' ' -f6-10

— первые два значения  VID и PID в формате vvvv:pppp.

Настройка TTY-порта

Надо установить утилиту stty из пакета coreutils:

sudo yum install -y coreutils.x86_64

Настройка порта:

stty raw -echo 9600 < /dev/ttyUSB1

или то же самое с другим синтаксисом:

stty raw -echo 9600 -F /dev/ttyUSB1

В каком-то случае может понадобиться индивидуальная настройка stty. См. man stty.

Работа в CLI: UART TX

Отправка в порт ASCII-строки:

echo -n AT+ > /dev/ttyUSB1

Отправка бинарного файла в UART:

dd if=fw_image_9600.sbl of=/dev/ttyUSB1 bs=1

 

Работа в CLI: UART RX

Приём из порта ASCII-последовательностей:

cat < /dev/ttyUSB1

 

picocom

Удобная интерактивная консоль, в общем случае может хватить запуска со следующими «магическими» параметрами:

sleep 1 && picocom --omap delbs --imap crcrlf,lfcrlf -b 9600 /dev/ttyUSB1

 

PS: если заметка помогла Вам, поделитесь ей с друзьями или коллегами: