第六章-串口UART驱动程序开发-2.ppt

第六章-串口UART驱动程序开发-2.ppt

ID:59605504

大小:582.50 KB

页数:19页

时间:2020-11-15

第六章-串口UART驱动程序开发-2.ppt_第1页
第六章-串口UART驱动程序开发-2.ppt_第2页
第六章-串口UART驱动程序开发-2.ppt_第3页
第六章-串口UART驱动程序开发-2.ppt_第4页
第六章-串口UART驱动程序开发-2.ppt_第5页
资源描述:

《第六章-串口UART驱动程序开发-2.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章串口UART驱动程序开发驱动程序的框架及其例子Makefile文件的基本语法串口驱动程序的开发1971.驱动程序的基本框架198模块的加载和卸装199一个2.6内核字符设备驱动书上的例子是基于linux2.4内核的,2.6内核在具体实现细节上有了新的变化。书上的例子不能直接在2.6内核上运行。这里给出一个具体可以运行的基于2.6内核的驱动程序和测试代码。200一个2.6内核字符设备驱动File_operations是应用程序和驱动程序的接口,file_operation把系统调用和驱动程序关联起来的关键数据结构。

2、这个结构的每一个成员都对应着一个系统调用201Makefile202Test.c203UART介绍RS232-C异步串行接口,传统上采用专用的集成电路即通用异步收发器(UniversalAsynchronousReceiverandTransmitter,UART)实现,UART作为计算机I/O接口中的重要组成部分,主要用于进行串行和并行数据流之间的变换。收发双方取得同步的方法是采用固定的串行数据格式,即在数据格式设置中分别加起始位和停止位,来标志一个数据帧的开始和结束。其串行数据格式如图2所示,包括1位起始位,5~8

3、位数据位,1位奇偶校验位(可选),1位停止位。204UART硬件实现205UART硬件实现206驱动开发所要了解的知识实现这么复杂,我真要去了解吗?????我应该知道哪些知识??驱动开发人员不用去关心硬件如何实现,只要关心硬件实现的结果是什么。硬件把结果写在寄存器里面所以驱动开发人员只要了解如何使用寄存器就可以了,207UART中的寄存器UART2数据寄存器UARTDR对应的地址:0xff001480RXdata是要接收和发送8位读写数据。208UART中的寄存器UART2波特率和行控制器UBRLCR2对应的地址:0x

4、ff0014c0本例里中对其设置0x00070001。*(volatileunsignedlong*)0xff0014c0=0x00070001WRDLEN=2’b11;FIFOEN=1’b1;BitRateDivisor=12’b1;209UART中的寄存器UART2系统标志寄存器SYSFLG对应的地址:0xff001140URXFE2:UART2接收FIFO空标志URXFF2:UART2发送FIFO满标志该寄存器的读取:inti=*(volatileunsignedlong*)0xff001140210UART2驱

5、动程序设计Uart是字符备,在linux设备中是比较简单的。应用程序可以利用它提供给文件系统的接口对它进行操作,包括对设备的打开、读/写及关闭。字符设备对数据的操作以字节库单位,它可以发送或接收一个字符流。驱动程序的几大部分:1.初始化和释放2.与应用程序的接口设计,file_operations3.内部函数的实现211初始化和释放在使用uart2之前,必须保证已经对它进行了注册。在设备初始化函数intuart2_kernel_init(void)中调用regiset_chrdev()函数完成这项工作Register_

6、chrdev(UART2_MAJOR,”uart2_ep7312”,&uart2_fops)在uart2_kernel_exit(void)函数中调用unregister完成此项工作。Unregister_chrdev(UART2_MAJOR,“uart2_ep7312)212与应用程序的接口设计,file_operationsUart2的基本入口点位于驱动程序的file_operations结构中。Structfile_operationsUart2_fops={open:uart2_kernel_open,//打开

7、设备文件ioctl:uart2_kernel_ioctl,//设备文件的其它操作}Structfile_operationsUart2_fops={.open=uart2_kernel_open,//打开设备文件.ioctl:=uart2_kernel_ioctl,//设备文件的其它操作}213内部函数的实现214串口通信实现Vioduart_2(char*s){intfd,rt;if((fd=open(“/dev/uart2”,0))<0){printf(“cannotopen/dev/uart2”)exit(0

8、);}printf(“pleaseinput0-9”);Delay(15000);rt=ioctl(fd,4,s);s[1]=‘’;close(fd);}215

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。