Linux下查看串口是否可用的笨方法
Posted 阿基米东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下查看串口是否可用的笨方法相关的知识,希望对你有一定的参考价值。
最近尝试将一个网关程序从 VxWorks 平台移植到 Linux 平台。在串口方面遇到了一些问题,这里记录一下。
首先在 VxWorks 下,用 devs
命令查看设备:
-> devs
drv name
0 /null
1 /tyCo/0
1 /tyCo/1
2 /pcConsole/0
2 /pcConsole/1
9 host:
4 /ram
11 /vio
4 /ahci01:1
value = 0 = 0x0
源程序中用到的串口就是 /tyCo/0 和 /tyCo/1,然后同事说 Linux 系统没有串口驱动,我想这怎么可能嘛!于是,在 Linux 下用 ls /dev/tty*
查看了一下,有好多呀。那么,如何确定哪个串口可用呢?
我先用 dmesg | grep tty
看看系统启动过程中初始化了哪些串口设备,输出如下:
[ 0.000000] console [tty0] enabled
[ 1.478484] 00:0c ttyS2 at I/O 0x3e8 (irq = 5, base_baud = 115200) is a 16550A
[ 1.500255] 00:0d ttyS3 at I/O 0x2e8 (irq = 10, base_baud = 115200) is a 16550A
tty0 是当前控制终端,执行命令 echo 123456 > /dev/tty0
,发现会在当前终端下打印“123456”。同样,我们测试 echo 123456 > /dev/ttyS2
和 echo 123456 > /dev/ttyS3
,发现没有提示错误,而其他(例如:ttyS0)则会提示错误。
另外我们可以用 cat /proc/tty/driver/serial
查看串口驱动信息,部分输出如下:
serinfo:1.0 driver revision:
0: uart:unknown port:000003F8 irq:4
1: uart:unknown port:000002F8 irq:3
2: uart:16550A port:000003E8 irq:5 tx:0 rx:0
3: uart:16550A port:000002E8 irq:10 tx:0 rx:0
4: uart:unknown port:00000000 irq:0
5: uart:unknown port:00000000 irq:0
6: uart:unknown port:00000000 irq:0
......
31: uart:unknown port:00000000 irq:0
显然,这里的信息与系统启动时打印的信息刚好对的上,16550A 是可编程串行接口芯片的型号。此外,通过 cat /proc/devices
和 cat /proc/tty/drivers
和 ls -l /dev/tty*
等命令,也可以看出一些有用信息。
通过上面这些笨方法,基本上可以确定 VxWorks 系统的 /tyCo/0
和 /tyCo/1
对于 Linux 系统的 /dev/ttyS2
和 /dev/ttyS3
。接下来就可以把相应的代码作修改进行验证了,或者进行串口编程来测试,例如:
int fd;
fd = open(“/dev/ttyS2”, O_RDWR);
if(fd == -1)
perror(“串口1打开失败!”);
更详细的串口编程,可以参考:http://www.cnblogs.com/lovemo1314/archive/2010/10/29/1864327.html
以上是关于Linux下查看串口是否可用的笨方法的主要内容,如果未能解决你的问题,请参考以下文章