Linux下RAW模式串口设置
作者:d0u9 发布时间:[ 2016/12/21 16:10:11 ] 推荐标签:操作系统 Linux
目前新购买的计算机上,串口(uart,rs-232)已经难觅踪迹。但作为开发调试人员,串口 依然广泛的被使用着,例如嵌入式开发,交换机配置等。
RAW模式与非RAW模式
RAW模式简单的来说,是发送端发动的二进制码原封不动的被接收端接收。
若干年前使用Windows下的 串口调试助手 对单片机串口进行调试是使用的RAW模式, 单片机发送的数据被原封不动的发送给PC端,PC端发送的数据也同样原封不动的发送回 单片机。
非RAW模式下,系统会对串口收到的数据中某些具有特殊意义的字符或组合进行转义。这种 工作模式的典型是在Linux下使用 minicom 配置交换机或串口登录其他Linux系统。
在Linux查看可用的串口
串口在Linux中被认为是一个普通的字符终端设备(tty),因此串口的设备文件命一般为 /dev/ttyX ,其中的X依据不同的串口类型会为2个到若干个字符。
想要在Linux下查看可用的串口,一般的方法为使用 dmesg 命令来查看Linux的日志,从 中找到串口的connect和disconnect信息,来确定具体的设备文件名。
在系统中执行如下命令:
dmesg | grep tty
在我的系统中(Debian 8),样例输出如下:
[ 0.000000] console [tty0] enabled
[ 0.552960] 00:01: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[ 3.019752] systemd[1]: Starting system-getty.slice.
[ 3.019769] systemd[1]: Created slice system-getty.slice.
[ 7.034310] usb 1-9: pl2303 converter now attached to ttyUSB0
可以看到我系统里有两个物理的串口,一个是 ttyS0 ,另一个是 ttyUSB0 ,其中 ttyS0 是我电脑主板上的原生串口, ttyUSB0 是一根USB转串口线。
有时候电脑可能已经运行了很久, dmesg 已经无法看到初的信息,那么可以使用如下 命令来查询
ls -l /sys/class/tty
这条命令会列出电脑中所有的tty设备,包括虚拟机的tty设备。
我系统中的样例输出为:
lrwxrwxrwx 1 root root 0 Dec 20 13:18 console -> ../../devices/virtual/tty/console
lrwxrwxrwx 1 root root 0 Dec 20 13:18 ptmx -> ../../devices/virtual/tty/ptmx
lrwxrwxrwx 1 root root 0 Dec 20 13:18 tty -> ../../devices/virtual/tty/tty
Here, we ommit some virtual tty devices.
lrwxrwxrwx 1 root root 0 Dec 20 13:18 tty8 -> ../../devices/virtual/tty/tty8
lrwxrwxrwx 1 root root 0 Dec 20 13:18 tty9 -> ../../devices/virtual/tty/tty9
lrwxrwxrwx 1 root root 0 Dec 20 13:18 ttyS0 -> ../../devices/pnp0/00:01/tty/ttyS0
lrwxrwxrwx 1 root root 0 Dec 20 13:18 ttyS1 -> ../../devices/platform/serial8250/tty/ttyS1
lrwxrwxrwx 1 root root 0 Dec 20 13:18 ttyS2 -> ../../devices/platform/serial8250/tty/ttyS2
lrwxrwxrwx 1 root root 0 Dec 20 13:18 ttyS3 -> ../../devices/platform/serial8250/tty/ttyS3
lrwxrwxrwx 1 root root 0 Dec 20 13:18 ttyUSB0 -> ../../devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/ttyUSB0/tty/ttyUSB0
在后我们能看到一些不是 virtual 的tty设备,其中一眼能分辨出来的是USB串口,此外 还有四个tty设备, ttyS0 , ttyS1 , ttyS2 和 ttyS3 ,这四个设备我们需要逐个来 试(抱歉,这里我也不知道怎么确定时哪一个,因为有些系统中platform下的串口也可能 为实际的物理串口)。
设置串口为RAW模式
在Linux下系统的tty模式为非RAW模式,如果要调试单片机这种嵌入式设备,则需要将串口 设置为RAW模式。
对tty的操作使用 stty 命令。
设置串口波特率到9600:
stty -F /dev/ttyX 9600
设置串口为RAW模式:
stty -F /dev/ttyX 115200
也可以在同一条命令中同时这是波特率和RAW模式:
stty -F /dev/ttyX 115200 raw
注意:我在Mac电脑上使用stty时,发现其命令行参数 -F 需要用 -f 来替换。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11