
$ dmesg | grep tty
输出:
[ 37.531286] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.531841] 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.532138] 0000:04:00.3: ttyS1 at I/O 0x1020 (irq = 18) is a 16550A
setserial 命令
setserial 是一个程序用于设定并/或报告某个串口关联的配置信息。该信息包括串口用到的I/O 端口和中断号,以及Break键是否应被解释为Secure Attention Key 等等。 仅仅是输出如下的命令:
$ setserial -g /dev/ttyS[0123]
输出:
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x1020, IRQ: 18
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
带-g选项的setserial帮助找到你的Linux板子上的物理串口。
Linux 串口控制台程序
一旦串口被确定了,你就能使用许多的工具来配置Linux板子:
minicom- 用于控制modem和连接到dump 设备的最好的串口通信程序。
wvidial or other GUI dial up networking program - 一个内建智能PPP 拨号器。
getty / agetty - agetty 打开一个 tty 端口, 提示登录名称并调用 /bin/login 命令。
grub / lilo configuration - 配置串口为系统控制台。
*** 作硬件之前都是要先open设备,先来分析下这里的open函数具体做了那些工作(做了大量工作 ,真的!)。 应用层通过open系统调用open(“/dev/s3c2410_serial0”,)一层一层调用到会调用到tty_open。因为串口在linux下是作为tty设备的,结合前面的注册过程可以分析这里首先调用的就是tty_open这个函数。cdev_init(&driver->cdev, &tty_fops)cdev_init(&driver->cdev, &tty_fops)因为根据注册的时候将s3c2410_serial0注册为一个字符设备,字符设备对应的驱动为tty_fops 详细介绍查看下《linux就该这么学》嵌入式开发板到手后一般都会开放串口,对串口的 *** 作可以说是最基本的 *** 作,那么拿到开发板后怎样 *** 作串口呢?怎样利用串口向外发送数据呢?我做的是一个通过串口来发送一串字符,实现NBIot的传输,系统是linux系统下的,发送的数据需要是16进制的数据。以下是c语言开发串口的相关代码记录。
1.找到串口的设备号
在linux系统下,所有的设备都是文件,所以要先找到串口这个设备文件,之后就可以对这个串口进行 *** 作。
#define UART_DEV "/dev/ttyAMA2"
2.打开串口并初始化串口
串口的打开只需要一个open函数就可以打开,下面有一个初始化的函数,先将串口打开,如果打开成功,会返回一个设备描述符。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)