嵌入式系统设计李秀娟第剖析.pptx

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 设备驱动程序开发 ;本章内容;目的和要求;8.1 设备驱动概述;8.1.1 驱动程序和应用程序的区别;应用程序与驱动程序的关系图 ; Linux的设备管理 ;字符设备 ;;块设备 ;;网络设备驱动 ;网络驱动的体系结构 ;8.2 设备驱动程序的开发过程;Linux为所有的设备文件都提供了统一的操作函数接口,具体操作方法是使用数据结构struct file_operations。 ; 在嵌入式系统的开发中,我们一般仅仅实现其中几个接口函数:read、write、ioctl、open、release,就可以完成应用系统需要的功能。 open接口 Open 接口提供给驱动程序初始化设备的能力,从而为以后的设备操作做好准备。 release接口 与 open函数相反 ; read 和write 接口 read 函数完成将数据从内核拷贝到应用程序空间,write函数则相反,将数据从应用程序空间拷贝到内核。 ;ioctl 接口 ioctl 接口主要用于对设备进行读写之外的其他控制。 ;1、LED驱动需要的头文件 # include linux/config.h //配置头文件 # include linux/kernel.h //内核头文件 # include linux/init.h //用户定义模块初始函数需引用的头文件 # include linux/module.h //模块加载的头文件 # include linux/delay.h //延时头文件 # include linux/major.h # include asm/hardware.h //用户的硬件配置文件 # include linux/io.h;2、LED驱动需要的宏定义 # define GPIO_LED_MAJOR 220 //定义主设备号 //声明4个LED灯的I/O端口; GPFDAT 是端口F的数据寄存器 # define LED1_ON()(GPFDAT = ~0x10) //GPF4输出0 # define LED2_ON()(GPFDAT = ~0x20) //GPF5输出0 # define LED3_ON()(GPFDAT = ~0x40) //GPF6输出0 # define LED4_ON()(GPFDAT = ~0x80) //GPF7输出0 # define LED1_OFF()(GPFDAT | = 0x10) //GPF4输出1 # define LED2_OFF()(GPFDAT | = 0x20) //GPF5输出1 # define LED3_OFF()(GPFDAT | = 0x40) //GPF6输出1 # define LED4_OFF()(GPFDAT | = 0x80) //GPF7输出1 //定义LED灯的状态 # define LED_ON 0 //低电平点亮LED # define LED_OFF 1 //高电平熄灭LED;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, } ;;4、LED驱动程序的读写函数实现 在本例中,LED的读写操作不做任何操作,可以省略。本例仅给出了读写操作函数的框架。 //-----------------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; };ssize_t GPIO_LED_ioctl(struct inode

文档评论(0)

四月 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档