- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                嵌入式第七章
                    第7章 Linux设备驱动程序 在Linux中有2种工作状态:内核态和用户态,应用程序处于用户态,无法直接访问硬件设备,需要借助驱动程序进入内核态才能访问硬件  7.1 Linux驱动程序概述 7.2 Linux设备管理结构 7.3 Linux驱动程序开发基础 7.4 Linux驱动程序编写 7.1 Linux驱动程序概述 7.1.1 Linux驱动程序分类 7.1.2 驱动程序的作用 7.1.3 嵌入式Linux驱动程序特点 7.1.4 Linux驱动程序开发流程 7.1.1 Linux驱动程序分类 Linux内核必须能够用标准的方式操作设备,每一类设备的驱动程序都提供了通用的接口,供内核在需要请求它们的服务时加以使用。  字符设备 块设备 网络设备 字符设备 字符设备原意是指那些只能按顺序一个字节一个字节读取的设备,但事实上一些高级的字符设备也可以从指定位置一次读取一块数据。其特点为: 按字节访问 顺序访问 一般不使用缓存技术 字符设备是最简单的设备,可以象文件一样访问,应用程序使用系统调用open、read、write、close访问,就像这个设备是个普通文件一样 鼠标,声卡等都为字符设备 初始化字符设备时,驱动程序要在内核注册,在字符设备开关表chrdevs中增加一个device_struct条目,主设备号作为这个表的索引。 每个device_struct结构包含2个元素,驱动程序的名字和文件操作的指针,这些文件操作位于驱动程序中。/proc/devices显示的就是chrdevs表中的内容(参见include/linux/major.h)。 每个字符设备文件对应一个VFS节点(用mknod或devfs函数创建),其中包含主次设备号,当使用文件时就可以通过VFS节点中的主设备号找到相应device_struct条目,并最后把相应的文件系统操作映射到驱动程序函数。 块设备 块设备指那些可以从任意位置读取任意长度数据的设备,它以块为单位进行处理,块的大小通常为0.5KB到32KB。其特点为: 按块访问 随机访问 常常采用缓存技术 硬盘、光盘驱动器等都为块设备。 块设备也支持象文件一样进行访问,注册时使用的条目也是device_struct,但注册使用的表是块设备开关表blkdevs。 与字符设备不同,块设备需要分类,如SCSI类、IDE类等,块设备类的驱动程序提供类相关的接口,参见fs/devices.c。 块设备驱动程序除了提供文件操作的接口,还要提供buffer Cache的接口,为了支持buffer Cache,块设备驱动程序要填充一个结构blk_dev_struct。 与字符设备不同,块设备拥有缓冲机制,这代表,对块设备的操作不一定会引起实际硬件的I/O。 块设备主要是针对磁盘等慢速设备设计的,可以避免耗费过多的CPU时间来等待。 网络设备 网络设备是linux中一类比较特殊的设备,它不能通过文件节点访问。 内核启动时,系统通过网络设备驱动程序注册已经存在的网络设备,设备用标准的支持网络的机制把收到的数据转送到相应的网络层。 每个网络接口,都有一个device结构表示,内核中网络设备管理表dev_base是一个指向device的指针,相当于一个链表的表头,所有的网络设备都放在这个链表中。 网络设备驱动程序的详细介绍本课从略。 7.1.2 驱动程序的作用 从传统嵌入式开发角度来看,Linux驱动程序是直接操控硬件的软件: 直接读写硬件寄存器,控制硬件 操作设备缓冲区数据 读写存储介质,比如flash或硬盘 操作输出设备和执行机构,例如打印,开关门禁等等 从应用软件编写人员来看,Linux驱动程序提供软件访问硬件的机制: 应用软件通过驱动程序安全高效的访问硬件 驱动程序文件节点可以方便的提供访问权限控制 驱动程序作为一个隔离的中间层软件,将底层细节隐藏起来,提高了软件的可移植性和可重用性 接口鲜明的Linux驱动程序便于将软件分层,并隔离有缺陷的代码,对于项目的管理有积极贡献 7.1.3 嵌入式Linux驱动程序特点 嵌入式Linux驱动程序需求多样: 嵌入式设备硬件各异,芯片花样繁多,总是需要相应的驱动程序 嵌入式系统硬件不停的更新进步,嵌入式芯片厂商如intel,samsung,freescale,TI,ST每年都有新品推出,很多都需要新的驱动 嵌入式处理器往往资源有限,比如处理速度、存储器容量、总线带宽、电池容量等都有限制 个性化和资源有限决定了开发驱动程序需要更专业软硬件知识 嵌入式产品开发还往往面临上市时间的压力 驱动程序对比应用程序 应用程序是一个进程 编程从主函数main()开始 主函数main()返回即是进程结束 驱动程序是一系列内核函数 驱动程序包含了一些函数,是内核的一部分 open() close
                您可能关注的文档
最近下载
- 2023年东胜区妇幼保健院护士招聘笔试高频试题摘选含答案详解.docx VIP
- 2025年河北水务有限公司公开招聘运行管理人员85人笔试备考题库及答案解析.docx VIP
- 成人经膀胱腹内压测量的最佳证据总结PPT.pptx VIP
- 体质 体质学说的应用.ppt VIP
- 2023年东胜区人民医院护士招聘笔试高频试题摘选含答案详解.docx VIP
- 2025年河北水务有限公司公开招聘运行管理人员85人笔试参考题库附答案解析.docx VIP
- 机动车查验工作规范(试行).pdf VIP
- 个人简历模板表格简历模板免费下载.docx VIP
- 电大高级财务会计历年来试题及答案.doc VIP
- 拼多多持平投产比计算公式(1).xlsx VIP
 原创力文档
原创力文档 
                        

文档评论(0)