项目嵌入式系统设备驱动程序开发PPT课件_第1页
项目嵌入式系统设备驱动程序开发PPT课件_第2页
项目嵌入式系统设备驱动程序开发PPT课件_第3页
项目嵌入式系统设备驱动程序开发PPT课件_第4页
项目嵌入式系统设备驱动程序开发PPT课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品课件 1 项目四 嵌入式系统设备驱动程序开发 精品课件 2 一 项目概况 精品课件 3 一 项目概况 项目说明 本项目利用ARM嵌入式微处理器与接口知识 在嵌入式系统的集成开发环境中采用基于Linux的应用程序设计基础上设计程序并在ARM板内烧写开发的可执行文件实现仿真月球车的测温测距避障控制 精品课件 4 二 知识储备 2 1设备驱动设备驱动程序将复杂的硬件抽象成一个结构良好的设备 并通过提供统一的程序接口为系统的其它部分提供使用设备的能力和方法 设备驱动程序 应该只是 为系统的其它部分提供各种使用设备的能力 使用设备的方法应该由应用程序决定 精品课件 5 二 知识储备 2 1设备驱动Linux下对外设的访问只能通过驱动程序Linux对于驱动程序有统一的接口 以文件的形式定义系统的驱动程序 Open Release read write ioctl 驱动程序是内核的一部分 可以使用中断 DMA等操作 驱动程序需要在用户态和内核态之间传递数据 精品课件 6 二 知识储备 2 1设备驱动驱动程序与应用程序的区别应用程序以main函数开始 驱动程序则没用main函数 它以特殊的模块初始化函数为入口 应用程序从头至尾执行一个任务 驱动程序在完成初始化后 等待系统调用 应用程序可以使用GLIBC等标准C函数库 驱动程序不能使用标准C函数库 精品课件 7 二 知识储备 2 1设备驱动设备驱动程序的分类字符设备驱动程序 如各种串行接口 并行接口等 块设备驱动程序 如磁盘设备等网络设备驱动程序 如网卡等 杂项设备驱动程序 不属于上述三种设备之外的一些设备 如SCSI 时钟等 精品课件 8 二 知识储备 2 1设备驱动驱动程序在操作系统中的位置设备驱动程序是内核代码的一部分 驱动程序的地址空间是内核的地址空间 驱动程序的代码直接对设备硬件 实际是设备的各种寄存器 进行控制 实际就是读写操作 应用程序通过操作系统的系统调用执行相应的驱动程序函数 中断则直接执行相应的中断程序代码 设备驱动程序的file operations结构体的地址被注册到内核中的设备链表中 块设备和字符设备以设备文件的方式建立在文件系统中的 dev目录下 而且每个设备都有一个主设备号和一个次设备号 精品课件 9 二 知识储备 2 1设备驱动主设备号和次设备号主设备号标识设备对应的驱动程序 一个驱动程序可以控制若干个设备 次设备号提供了一种区分它们的方法 系统增加一个驱动程序就要赋予它一个主设备号 这一赋值过程在驱动程序的初始化过程中intregister chrdev unsignedintmajor constchar name structfile operations fops 精品课件 10 二 知识储备 2 1设备驱动创建设备节点设备已经注册到内核表中 对于设备的访问通过设备文件 设备文件与设备驱动程序的主设备号匹配 内核会调用驱动程序中的正确函数 给程序一个它们可以请求设备驱动程序的名字 这个名字必须插入到 dev目录中 并与驱动程序的主设备号和次设备号相连 使用mknod在文件系统上创建一个设备节点 精品课件 11 二 知识储备 2 1设备驱动设备驱动程序的接口file operations结构体主要包括 open close 或者release read write ioctl poll mmap等 结构体spioc fops将作为一个参数在注册一个设备驱动程序时传递给内核 内核使用设备链表维护各种注册的设备 不同类型的设备使用不同的链表 精品课件 12 二 知识储备 2 1设备驱动structfile operationsdemo fops 完成了将驱动函数映射为标准接口 例如 staticstructfile operationsdemo fops owner THIS MODULE write demo write read demo read ioctl demo ioctl open demo open release demo release 精品课件 13 二 知识储备 2 1设备驱动设备驱动程序的使用方法应用层使用open close read write系统调用 需要编写应用程序 精品课件 14 二 知识储备 2 2设备驱动案例分析 LED驱动 LED电路原理图如下所示 由此我们可以看到5个LED灯分别连接到6410处理器的GPQ2 6管脚上 通过输出低电平可使LED灯亮 高电平LED灯灭 精品课件 15 二 知识储备 2 2设备驱动案例分析 LED驱动 精品课件 16 二 知识储备 2 2设备驱动案例分析 LED驱动 驱动程序分析 include Dynamicloadingofmodulesintothekernel include 与printk 等函数有关的头文件 include 与文件系统有关的头文件 如file operations include 初始化相关头文件 include include 与延时相关 include 与cdev结构相关 精品课件 17 二 知识储备 2 2设备驱动案例分析 LED驱动 驱动程序分析 include 与自动创建设备文件相关 include 与中断相关 include 与寄存器相关 include 与IO配置相关 include 与IO相关 include include copy from user MODULE LICENSE GPL 表式开放源码 在linux module h中定义 defineDEVICE NAME leds 该驱动的设备名 defineDEVICE MAJOR231 该驱动的主设备号 defineDEVICE MINOR0 该驱动的从设备号 IOCTLcommands defineLED IOC MAGIC 精品课件 18 二 知识储备 2 2设备驱动案例分析 LED驱动 驱动程序分析 defineLED IOC WR ON IOW LED IOC MAGIC 0 x80 unsignedint LEDioctl命令 defineLED IOC WR OFF IOW LED IOC MAGIC 0 x81 unsignedint LEDioctl命令structcdev mycdev 定义字符设备结构体 structclass myclass 定义class dev tdevno 定义设备号 staticunsignedlongled table io列表S3C64XX GPQ 2 S3C64XX GPQ 3 S3C64XX GPQ 4 S3C64XX GPQ 5 S3C64XX GPQ 6 精品课件 19 二 知识储备 2 2设备驱动案例分析 LED驱动 驱动程序分析 staticlonguptech leds ioctl structfile file unsignedintcmd unsignedlongarg intret unsignedlong buf Checktypeandcommandnumber if IOC TYPE cmd LED IOC MAGIC 判断是不是针对此驱动的命令return ENOTTY if arg 4 return EINVAL buf unsignedlong kmalloc sizeof buf GFP KERNEL 申请内存 精品课件 20 二 知识储备 2 2设备驱动案例分析 LED驱动 驱动程序分析 if buf NULL return ENOMEM ret copy from user buf 精品课件 21 二 知识储备 2 2设备驱动案例分析 LED驱动 驱动程序分析 staticstructfile operationsuptech leds fops owner THIS MODULE unlocked ioctl uptech leds ioctl staticint inituptech leds init void inti interr devno MKDEV DEVICE MAJOR DEVICE MINOR 获得dev t类型的设备号register chrdev region devno 1 DEVICE NAME 申请设备号devnomycdev cdev alloc 动态申请cdev内存mycdev ops 精品课件 22 二 知识储备 2 2设备驱动案例分析 LED驱动 驱动程序分析 device create myclass NULL MKDEV DEVICE MAJOR DEVICE MINOR NULL DEVICE NAME 创建设备文件for i 0 i 5 i s3c gpio cfgpin led table i S3C GPIO SFN 1 初始化设置管脚为输出方式gpio set value led table i 1 设置输出高电平 printk DEVICE NAME initialized n return0 staticvoid exituptech leds exit void cdev del mycdev 删除字符设备device destroy myclass devno 删除设备文件class destroy myclass 删除classunregister chrdev region devno 1 释放申请的设备号 精品课件 23 二 知识储备 2 2设备驱动案例分析 LED驱动 应用程序分析 include include include include ioctl函数头文件 IOCTLcommands defineLED IOC MAGIC l defineLED IOC WR ON IOW LED IOC MAGIC 0 x80 unsignedint ioctl的命令 defineLED IOC WR OFF IOW LED IOC MAGIC 0 x81 unsignedint ioctl的命令intmain intargc char argv inti inton intled number intfd 精品课件 24 二 知识储备 2 2设备驱动案例分析 LED驱动 应用程序分析 if argc 3 sscanf argv 1 d 精品课件 25 二 知识储备 2 2设备驱动案例分析 LED驱动 应用程序分析 if on 0 x01 ioctl fd LED IOC WR ON led number 开灯操作 elseif on 0 x00 ioctl fd LED IOC WR OFF led number 关灯操作 for i 0 i 100 i usleep 1000 close fd return0 精品课件 26 二 知识储备 2 3红外测温技术温度测量分为接触式和非接触式两大类 接触式测温测温元件直接与被测对象相接触 两者之间进行充分的热交换达到热平衡 这时感温元件的某一物理参数的量值就代表了被测对象的温度值 优点 直观可靠 缺点 感温元件影响被测温度场的分布 接触不良等带来测量误差 高温和腐蚀性介质影响感温元件的性能和寿命 非接触式测温感温元件不与被测对象相接触 而通过热辐射进行热交换 具有较高的测温上限 热惯性小 可达千分之一秒 故便于测量运动物体的温度和快速变化的温度 精品课件 27 二 知识储备 2 3红外测温技术1800年 赫胥尔首先发现了红外辐射 经过几代科学家100多年的探索 实验与研究 总结出了正确的辐射定律 为成功地研制红外辐射测温仪奠定了理论基础 20世纪60年代以后 由于各种高灵敏度红外探测器 干涉滤光片以及数字信号处理技术的发展 大大促进了红外技术应用的进程 近几十年来 比色测温仪 光纤测温仪 扫描测温仪等满足各种需要的红外测温仪相继出现和不断改进 使红外技术的研究与应用有了新的飞跃 虽然红外测温技术问世的时间并不很长 但是它安全 可靠 非接触 快速 准确 方便 寿命长等不可替代的优势 已被越来越多的企业与厂家所认识和接受 在冶金 石化 电力 交通 水泥 橡胶等行业得到了广泛的应用 成为企业故障检测 产品质量控制和提高经济效益的重要手段 精品课件 28 二 知识储备 2 3红外测温技术红外线传感器是利用红外线的物理性质来进行测量的传感器 红外线又称红外光 它具有反射 折射 散射 干涉 吸收等性质 任何物质 只要它本身具有一定的温度 高于绝对零度 都能辐射红外线 红外线传感器测量时不与被测物体直接接触 因而不存在摩擦 并且有灵敏度高 响应快等优点 红外线传感器包括光学系统 检测元件和转换电路 光学系统按结构不同可分为透射式和反射式两类 检测元件按工作原理可分为热敏检测元件和光电检测元件 热敏元件应用最多的是热敏电阻 热敏电阻受到红外线辐射时温度升高 电阻发生变化 通过转换电路变成电信号输出 光电检测元件常用的是光敏元件 通常由硫化铅 硒化铅 砷化铟 砷化锑 碲镉汞三元合金 锗及硅掺杂等材料制成 精品课件 29 二 知识储备 2 3红外测温技术红外线传感器常用于无接触温度测量 气体成分分析和无损探伤 在医学 军事 空间技术和环境工程等领域得到广泛应用 例如采用红外线传感器远距离测量人体表面温度的热像图 可以发现温度异常的部位 及时对疾病进行诊断治疗 见热像仪 利用人造卫星上的红外线传感器对地球云层进行监视 可实现大范围的天气预报 采用红外线传感器可检测飞机上正在运行的发动机的过热情况等 精品课件 30 二 知识储备 2 3红外测温技术红外温度传感器 精品课件 31 二 知识储备 2 4红外测距技术利用的是红外线传播时的不扩散原理 因为红外线在穿越其它物质时折射率很小 所以长距离的测距仪都会考虑红外线 而红外线的传播是需要时间的 当红外线从测距仪发出碰到反射物被反射回来被测距仪接受到 再根据红外线从发出到被接受到的时间及红外线的传播速度就可以算出距离 利用高频调制的红外线在待测距离上往返产生的相位移推算出光束度越时间 t 从而根据D C t 2得到距离D 精品课件 32 二 知识储备 2 4红外测距技术集成红外测距传感器 精品课件 33 三 项目实现 3 1硬件原理图红外测温原理图 精品课件 34 三 项目实现 3 2程序流程图 精品课件 35 三 项目实现 3 3源程序分析 defineNUM EXTRAIO4 defineS3C2440 GPIO OUTPUT1 defineS3C2410 GPIO INPUT0 扩展接口上的数字口文件描述符intextraio fd 0 enumEXTRAIOPUT EINT11 0 EINT13 EINT6 EINT3 staticunsignedcharextraio table EINT11 EINT11EINT13 EINT13EINT6 EINT6EINT3 EINT3 精品课件 36 三 项目实现 3 3源程序分析staticunsignedintextraio cfg table S3C2440 GPIO OUTPUT S3C2440 GPIO OUTPUT S3C2440 GPIO OUTPUT S3C2440 GPIO OUTPUT 读取扩展板上的数字口unsignedcharextraioRead if extraio fd 0 extraio fd open dev extraio O RDWR if extraio fd 0 printf cannotopenextraiodevice line d n LINE return 1 unsignedcharbut 0 read extraio fd 精品课件 37 三 项目实现 3 3源程序分析 对扩展板上的数字口进行写操作voidextraioWrite unsignedcharbut if extraio fd 0 extraio fd open dev extraio O RDWR if extraio fd 0 printf cannotopenextraiodevice line d n LINE return write extraio fd 精品课件 38 三 项目实现 3 3源程序分析 配置扩展板上的数字口

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论