Serial ports usage on Linux
From ArmadeusWiki
(Redirected from Uart)
How to use the APF's serial ports on Linux.
Contents
[hide]Generalities
On Linux, all serial ports are driven the same way. Only their device nodes are changing to reflect the port type:
- i.MX processor internal ports:
- /dev/ttyUSBN for USB <-> serial converters
- /dev/ttySnN for 16550 compatible FPGA's IP
Console port
- Console port is the default serial port on which you can interact with the board (U-Boot and Linux):
- So, without software modifications, this port is not available to connect a MODEM or any other RS-232 device. If you want to use it as a normal serial port on Linux then:
- be sure that your device won't send data back in response of U-Boot boot's sequence
- change U-Boot consoledev envt variable, to tell Linux to display console on the LCD (for example):
BIOS> setenv consoledev tty0
Changing serial ports configuration
- To get current configuration (adapt serial port device name depending on your board, here ttymxc0):
# stty -F /dev/ttymxc0 speed 115200 baud; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ^J; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -brkint ixoff -imaxbel -iexten -echoctl
- To only get actual speed:
# stty -F /dev/ttymxc0 speed 115200
- By default serial ports are configured as terminal emulator (canonical mode). If you want to use them as "raw" serial port you will have to do first (example for port 1):
# stty -F /dev/ttymxc1 raw -echo -echoe -echok
- To change baudrate of port 2 to 115200 :
# stty -F /dev/ttymxc2 115200
Sending/Receiving data
In Linux console
- It is as simple as opening the device as a file and writing data to it:
# echo "HELLO" > /dev/ttymxc0
- To receive data (ASCII in that case):
# cat /dev/ttymxc0
With terminal (miniterm.py)
By default, a simple terminal named «miniterm.py» is installed in the BSP. To use it on OPOS6UL, launch it with /dev port name and speed :
$ miniterm.py /dev/ttymxc1 115200 --- Miniterm on /dev/ttymxc1 115200,8,N,1 --- --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- Hello world !
On OPOS6UL_DEV if Rx/Tx are not in loop, nothing will be prompted on key input. To see something prompted the Rx/Tx must be plugged together with a jumper on RaspberryPi connector (pin 8 and 10).
Statistics
- To have some statistics on serial port usage:
# cat /proc/tty/driver/<driver_name> (for example ttyAPP on APF28, IMX-uart on OPOS6UL) serinfo:1.0 driver revision: 0: uart:8006a000.serial mmio:0x8006A000 irq:214 tx:0 rx:0 CTS 1: uart:8006c000.serial mmio:0x8006C000 irq:215 tx:0 rx:0 CTS 3: uart:80070000.serial mmio:0x80070000 irq:216 tx:875195 rx:4024187 CTS 4: uart:80072000.serial mmio:0x80072000 irq:217 tx:0 rx:0 CTS