串口UART驱动程序开发

上传人:新** 文档编号:592451121 上传时间:2024-09-20 格式:PPT 页数:19 大小:517.50KB
返回 下载 相关 举报
串口UART驱动程序开发_第1页
第1页 / 共19页
串口UART驱动程序开发_第2页
第2页 / 共19页
串口UART驱动程序开发_第3页
第3页 / 共19页
串口UART驱动程序开发_第4页
第4页 / 共19页
串口UART驱动程序开发_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《串口UART驱动程序开发》由会员分享,可在线阅读,更多相关《串口UART驱动程序开发(19页珍藏版)》请在金锄头文库上搜索。

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

2、串行接口,传统上采用专用的集成电路即通用异步收发器( Universal Asynchronous Receiver and Transmitter ,UART) 实现,UART 作为计算机I/ O 接口中的重要组成部分,主要用于进行串行和并行数据流之间的变换。收发双方取得同步的方法 是采用固定的串行数据格式, 即在数据格式设置中分别加起始位和停止位, 来标志一个数据帧的开始和结束。其串行数据格式如图2 所示,包括1位起始位, 58 位数据位, 1 位奇偶校验位(可选) , 1 位停止位 。204UART硬件实现205UART 硬件实现206驱动开发所要了解的知识 实现这么复杂,我真要去了解吗

3、?我应该知道哪些知识?驱动开发人员不用去关心硬件如何实现,只要关心硬件实现的结果是什么。硬件把结果写在寄存器里面所以驱动开发人员只要了解如何使用寄存器就可以了,207UART中的寄存器 UART2 数据寄存器 UARTDR对应的地址:0xff001480RX data 是要接收和发送8位读写数据。208UART中的寄存器 UART2 波特率和行控制器UBRLCR2对应的地址:0xff0014c0本例里中对其设置 0x00070001。*(volatile unsigned long*) 0xff0014c0 = 0x00070001 WRDLEN =2b11; FIFOEN= 1b1; Bit

4、 Rate Divisor = 12b1;209UART中的寄存器 UART2 系统标志寄存器SYSFLG对应的地址:0xff001140 URXFE2:UART2接收FIFO空标志 URXFF2:UART2发送FIFO满标志该寄存器的读取: int i= *(volatile unsigned long *) 0xff001140210UART2 驱动程序设计Uart是字符备,在linux设备中是比较简单的。应用程序可以利用它提供给文件系统的接口对它进行操作,包括对设备的打开、读/写及关闭。字符设备对数据的操作以字节库单位,它可以发送或接收一个字符流。驱动程序的几大部分: 1. 初始化和释放

5、 2. 与应用程序的接口设计,file_operations 3. 内部函数的实现 211初始化和释放在使用uart2之前,必须保证已经对它进行了注册。在设备初始化函数int uart2_kernel_init(void)中调用regiset_chrdev()函数完成这项工作Register_chrdev(UART2_MAJOR,”uart2_ep7312”, &uart2_fops)在 uart2_kernel_exit(void)函 数 中 调 用unregister 完成此项工作。Unregister_chrdev(UART2_MAJOR, “uart2_ep7312)212与应用程序的

6、接口设计,file_operationsUart2的 基 本 入 口 点 位 于 驱 动 程 序 的file_operations结构中。Struct file_operations Uart2_fops= open: uart2_kernel_open, /打开设备文件 ioctl: uart2_kernel_ioctl, / 设备文件的其它操作Struct file_operations Uart2_fops= .open =uart2_kernel_open, /打开设备文件 . ioctl: =uart2_kernel_ioctl, / 设备文件的其它操作213内部函数的实现214串口通信实现Viod uart_2(char *s)int fd,rt; if(fd = open(“/dev/uart2”,0)0) printf(“cannot open /dev/uart2n”) exit(0); printf(“please input 0-9 n”); Delay(15000); rt = ioctl(fd,4,s); s1=0; close(fd);215

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号