基于华邦基于华邦W90P710的嵌入式的嵌入式Linux串口驱动的实现方法串口驱动的实现方法
基于华邦W90P710处理器的Linux内核应用,详细介绍了Linux串口驱动的实现方法。同时对Linux文件系统操作
入口函数及内核的编译做了详细的说明。
摘摘 要:要: 基于华邦W90P710处理器的
关键词:关键词:
嵌入式Linux是一种很受欢迎的操作系统,具有开放源码、不存在黑箱技术、内核小、功能强大、运行稳定、效率高、易于定
制裁减等特点[1],广泛应用于工控产品。很多工控产品需要和外部设备进行信息交换,而串口通信是最简单快捷的实现方
法。在不同的工控产品中,由于对所选用的串口元件或者串口通信的数据格式、波特率等有不同的需求,需要对串口驱动进行
开发。华邦W90P710采用ARM的ARM7TDMI微处理器核心,采用?滋CLinux-2.4.20内核,支持4组通用异步接收发送口
(UART),下面基于华邦W90P710的串口驱动详细分析串口驱动的实现方法,实现嵌入式设备通过串口对外通信。
1 华邦W90P710 UART介绍
华邦W90P710支持4组UART,串口的控制主要通过以下寄存器实现[2]:
(1)行寄存器(UART_LCR):设置数据位长度、奇偶校验、停止位数。
(2)波特率除数寄存器(UART_DLL、UART_DLM):波特率发生器的公式为:BaudOut=crystal clock/16×[Divisor
+2],Divisor为当前波特率。
(3)Modem控制寄存器(UART_MCR):控制RTS、CTS等信号。
(4)FIFO控制寄存器(UART_FCR):设置FIFO的长度,复位FIFO等控制。
(5)接收超时寄存器(UART_TOR):收到首个字节后接收器启动本超时,之后每收到一个字节后都会重置该值,在此超时
时间内不再收到数据时,接收器会产生一个接收中断。
(6)中断控制器(UART_IER):设置接收、发送、行中断等。
在使用RXDn、TXDn前必须对GPIO进行配置,使能RXDn、TXDn,串口才可正常运行。GPIO配置对应表如表1所示。
2 Linux系统驱动介绍系统驱动介绍
设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看
来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。同时,设备驱动程序是内核的一部
分[3]。图1所示为设备驱动程序接口流程图。
Linux系统的设备分为字符设备、块设备和网络设备三种。字符设备是指存取时没有缓存的设备,只能顺序读写。典型的字
符设备包括鼠标、键盘、串行口等;块设备一般都有缓存来支持,并且块设备必须能够支持随机存取。块设备主要包括硬盘设
备、CD-ROM等;网络设备在Linux系统中用做专门的处理,Linux的网络系统主要是基于BSD Unix的socket机制[4]。
3
一般来说,Linux的设备驱动程序包括驱动程序的注册和注销、设备的打开和释放、设备的读写操作、设备的控制操作、设
备的中断和轮询处理等功能。下面就这些功能对串口驱动进行详细说明。
(1)串口设备的数据结构包括串口参数接收发送缓冲区等。串口参数包括波特率、数据位、数据起始位、奇偶校验、串口类
型、发送缓冲区、接收缓冲区等,每个串口对应一个如下的数据结构:
typedef struct{
int bps;
int databits;
int stopbits;
int parity;