-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.
第一:
实战 Linux 串口编程
本章导读
1)学习过单片机的用户,对串口不会太陌生,在单片机串口编程中,需要用户直接对寄存器以及中断进行控制。
2)在 linux 串口编程中,无论是从 linux 官方直接下载的原生态内核,还是任何厂家提供的linux 内核,都会将串口驱动写好,所以对于所有的驱动工程师来说,是完全不需要自己动手写串口驱动的。
3)本章介绍的 linux 串口编程,实际上指的是 Linux 串口应用编程,直接使用提供原厂提供的接口,进行初始化配置以及发送和接收。对于从事 linux 编程的程序员来说,这一部分内容必须熟练掌握
串口通信
串口通信是指一次只传送一个数据位。虽然在通信的时候串口有 8 位或者 9 位等,但是在物理层面传输的时候,它仍然是以单个 bit 的方式传输的。
串口
虽然以太网以及 USB 等等也是以串行的方式发送数据,但是串口一般特指 RS232 标准的接口
RS232 的针脚定义
RS232 有两种标准定义,25 针和 8 针的。不过即使是 8 针,在大多数场合工程师也觉得太多了,绝大多数情况下都是只使用 TX,RX 针脚发送和接收信号,再加上一个 GND 地脚。其它定义大家可以通过网络了解一下
第二:
串口编程的流程分析
1)打开串口,一般使用 open 函数,打开之后会返回句柄,这个句柄就可以提供给发送和接收函数使用。串口本质上也是字符设备,但是串口是属于一种比较特殊的字符设备。
2)初始化串口,串口需要配置波特率,数据位,校验位等等一系列的参数,初始化的过程掌握了,发送和接收都比较容易实现。虽然初始化比较麻烦,但是无论是在 window 下还是在 linux下,串口的初始化都是很容易找到例程的。个人建议只要能够读懂代码,根据实际需求进行验证和配置即可。
3)发送和接收数据,前面提到过串口是属于字符设备的,可以使用 read 函数和 write 函数实现。
4)关闭,使用函数 close 即可关闭串口
第三:
实验-开机启动运行
做串口实验的时候,通过另外的串口读和写,考虑到部分用户可能没有多余的串口或者串口线,这里简单的做一个开机启动的实验。
一个程序能够开机自动启动运行,那么就能不用超级终端的调试串口也能进行程序的测试了。
实验例程
如下图所示,使用前面最简单的 helloworld 程序。,前面也编译运行通过了,代码如下
如上所示,代码非常简单,只是打印“Hello World”。
操作方法
1)首先确保上面的 helloworld 可执行程序已经在 U 盘中了。开机启动开发板,插入 U 盘,加载 U 盘。
2)然后如下图所示,使用拷贝命令“cp -r /mnt/udisk/helloworld /bin/”将其拷贝到/bin目录下,然后使用 ls 命令确认一下。
3)使用命令“chmod 777 /bin/helloworld”修改权限
4)接着使用命令“vi /etc/init.d/rcS”打开文件系统的启动文件,如下图所示。
5)保存退出
6)为了方便查找打印信息,可以按照前面入门介绍的方法设置一下开机启动 log,我这里的路径是桌面上的 startlog.log 文件。如下图所示,迅为提供的超级终端设置保存 log 的方法为,“控制”→“日志设置”,然后弹出下图所示的日志配置窗口。
7)然后重启开发板。重启开发板之后,其实超级终端中也是会打印信息的,但是启动信息太多,不容易查找。