嵌入式系统设计ppt课件 第8章.pptx
《嵌入式系统设计ppt课件 第8章.pptx》由会员分享,可在线阅读,更多相关《嵌入式系统设计ppt课件 第8章.pptx(37页珍藏版)》请在三一办公上搜索。
1、第8章 设备驱动程序开发,驱动激励硬件设备开启,赋予硬件设备能量,1,本章内容,2,8.1 设备驱动概述,1,8.2 设备驱动程序的开发过程,2,8.3 驱动程序开发的常见问题,3,目的和要求,了解驱动程序的功能理解驱动程序开发过程掌握各类设备驱动程序设计方法掌握驱动程序开发过程中的常见问题掌握直流电机驱动程序设计实例,3,8.1 设备驱动概述,主要完成以下的功能:(1)对设备初始化和释放;(2)把操作数据从内核传送到硬件和从硬 件读取数据;(3)读取应用程序传送给硬件设备的数据 和回送应用程序请求的数据;(4)检测和处理硬件设备出现的错误。,4,8.1.1 驱动程序和应用程序的区别,设备驱动
2、程序就工作在“内核空间” ;应用程序则是在“用户空间”中运行 。驱动程序的优先级高于应用程序。 驱动程序可以对硬件进行直接访问和对内存的访问。应用程序则不能。,5,应用程序与驱动程序的关系图,6,Linux的设备管理,字符设备(Character Device) 块设备(Block Device) 网络设备驱动(Network interface),7,字符设备,Linux下的字符设备接口支持面向字符的I/O操作,是以字节为单位顺序读写; 字符设备无需缓存且被直接读写 ;字符设备可以访问/dev目录下的文件系统节点,8,字符设备驱动程序示意图,9,块设备,Linux系统下的块设备是指对信息存取
3、以“块”为单位 ;块设备对于I/O请求有对应的缓冲区,块设备具有随机访问特性;块设备和字符设备一样也是通过/dev目录下的文件系统节点被访问的;块驱动程序除了给内核提供和字符设备驱动程序一样的接口以外,还提供了专门面向块设备的接口 ;块设备的接口还必须支持挂装(mount)文件系统。,10,块设备驱动程序数据结构示意图,11,网络设备驱动,网络驱动的体系结构包括网络协议接口层、网络设备接口层、网络驱动接口层和设备媒介层。,12,网络驱动的体系结构,13,8.2 设备驱动程序的开发过程,8.2.1 字符设备驱动程序的设计,驱动程序的接口流程图,14,Linux为所有的设备文件都提供了统一的操作函
4、数接口,具体操作方法是使用数据结构struct file_operations。,struct file_operations struct module *owner;loff_t (*llseek) (struct file *, loff_t, int);ssize_t (*read) (struct file *, char *, size_t, loff_t *);ssize_t (*write) (struct file *, const char *, size_t, loff_t *);int (*readdir) (struct file *, void *, filldir
5、_t);unsigned int (*poll) (struct file *, struct poll_table_struct *);int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);int (*mmap) (struct file *, struct vm_area_struct *);int (*open) (struct inode *, struct file *);,15,在嵌入式系统的开发中,我们一般仅仅实现其中几个接口函数:read、write、ioctl、open、releas
6、e,就可以完成应用系统需要的功能。open接口 Open 接口提供给驱动程序初始化设备的能力,从而为以后的设备操作做好准备。release接口 与 open函数相反 ;read 和write 接口 read 函数完成将数据从内核拷贝到应用程序空间,write函数则相反,将数据从应用程序空间拷贝到内核。,16,ioctl 接口 ioctl 接口主要用于对设备进行读写之外的其他控制。,例:LED驱动程序: S3C2410上的4个LED指示灯由4个I/O端口控制,他们分别是GPF4GPF7,当GPF4GPF7分别输出低电平时候,LED指示灯亮,输出高电平的时候,LED指示灯灭,17,1、LED驱动需
7、要的头文件 # include /配置头文件# include /内核头文件# include /用户定义模块初始函数需引用的头文件# include /模块加载的头文件# include /延时头文件 # include # include /用户的硬件配置文件# include ,18,2、LED驱动需要的宏定义 # define GPIO_LED_MAJOR 220 /定义主设备号/声明4个LED灯的I/O端口; GPFDAT 是端口F的数据寄存器# define LED1_ON()(GPFDAT & = 0 x10) /GPF4输出0# define LED2_ON()(GPFDAT
8、& = 0 x20) /GPF5输出0# define LED3_ON()(GPFDAT & = 0 x40) /GPF6输出0# define LED4_ON()(GPFDAT & = 0 x80) /GPF7输出0# define LED1_OFF()(GPFDAT | = 0 x10) /GPF4输出1# define LED2_OFF()(GPFDAT | = 0 x20) /GPF5输出1# define LED3_OFF()(GPFDAT | = 0 x40) /GPF6输出1# define LED4_OFF()(GPFDAT | = 0 x80) /GPF7输出1/定义LED灯
9、的状态# define LED_ON 0 /低电平点亮LED# define LED_OFF 1 /高电平熄灭LED,19,3、file_operations 结构体的设计 struct file_operations GPIO_LED_ctl_ops= open: GPIO_LED_open, read: GPIO_LED_read, write: GPIO_LED_write, ioctl: GPIO_LED_ioctl, release: GPIO_LED_release, ;,20,4、LED驱动程序的读写函数实现 在本例中,LED的读写操作不做任何操作,可以省略。本例仅给出了读写操作
10、函数的框架。/-READ-ssize_t GPIO_LED_read(struct file * file ,char * buf , size_t count, loff_t * f_ops) return count;/-WRITE-ssize_t GPIO_LED_write(struct file * file ,const char * buf , size_t count, loff_t * f_ops) return count;,21,ssize_t GPIO_LED_ioctl(struct inode * inode, struct file * file,unsigned
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式系统设计ppt课件 第8章 嵌入式 系统 设计 ppt 课件
链接地址:https://www.31ppt.com/p-1604968.html