嵌入式Linu驱动程序开发.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式 Linux 驱动程序开发 1.设备驱动程序的概念 2 2.处理器与设备间数据交换方式 2 21.查询方式 2 2.2.中断方式 3 2.3.直接访问内存(DMA)方式 3 3.驱动程序结构 3 3.1 一个设备驱动程序模块的基本框架 4 3.1. file_operations 结构体 5 3.2.inode{}和 file{}结构体 5 4.设备注册和初始化 6 5.中断管理 7 6.设备驱动程序的开发过程 8 7.设备驱动开发的基本函数 8 7.1.I/O 口函数 8 7.2.时钟函数 9 内存操作函数 10 复制函数 10 模块加载与卸载 10 实例剖析 11 实例一 11 驱动程序 11 用户程序 14 执行效果 15 实例二 16 块设备驱动程序的编写 19 块设备驱动编写流程 20 重要数据结构 21 struct bio. 21 struct gendisk 22 设备初始化 24 request 操作 25 打开操作 25 释放设备操作 25 ioctl 操作 25 中断编程 25 一个简单的块设备驱动 26 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件, 应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分。 Linux 将设备主要分成两大类:一类是块设备,类似磁盘以记录块或扇区为单位,成块进行输入/输出的设备;另一类是字符设备,类似键盘以字符为单位,逐个进行输入 /输出的设备。网路设备是介于块设备和字符设备之间的一种特殊设备。 块设备接口仅支持面向块的 I/O 操作,所有I/O 操作都通过在内核地址空间中的 I/O 缓 冲区进行,它可以支持随机存取的功能。文件系统通常都建立在块设备上。 字符设备接口支持面向字符的 I/O 操作,由于它们不经过系统的快速缓存,所以它们负责管理自己的缓冲区结构。字符设备接口只支持顺序存取的功能,一般不能进行任意长度的I/O 请求,而是限制I/O 请求的长度必须是设备要求的基本块长的倍数。 设备驱动程序的概念 设备驱动程序实际是处理和操作硬件控制器的软件,从本质上讲,是内核中具有最高特权级的、驻留内存的、可共享的底层硬件处理例程。驱动程序是内核的一部分,是操作系统内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节,完成以下功能: 对设备初始化和释放; 对设备进行管理,包括实时参数设置,以及提供对设备的操作接口; 读取应用程序传送给设备文件的数据或者回送应用程序请求的数据; 检测和处理设备出现的错误。 Linux 操作系统将所有的设备全部看成文件,并通过文件的操作界面进行操作。对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了一致的接口,一般来说, 是把设备映射为一个特殊的设备文件,用户程序可以像对其他文件一样对此设备文件进行操 作。这意味着: 由于每一个设备至少由文件系统的一个文件代表,因而都有一个“文件名”。 应用程序通常可以通过系统调用 open()打开设备文件,建立起与目标设备的连接。 打开了代表着目标设备的文件,即建立起与设备的连接后,可以通过 read()、write()、ioctl()等常规的文件操作对目标设备进行操作。 设备文件的属性由三部分信息组成:第一部分是文件的类型,第二部分是一个主设备号,第三部分是一个次设备号。其中类型和主设备号结合在一起惟一地确定了设备文件驱动程序及其界面,而次设备号则说明目标设备是同类设备中的第几个。 由于 Linux 中将设备当做文件处理,所以对设备进行操作的调用格式与对文件的操作类似, 主要包括 open()、read()、write()、ioctl()、close()等。应用程序发出系统调用命令后, 会从用户态转到核心态,通过内核将 open()这样的系统调用转换成对物理设备的操作。 处理器与设备间数据交换方式 处理器与外设之间传输数据的控制方式通常有 3 种:查询方式、中断方式和直接内存存取 (DMA)方式。 21.查询方式 设备驱动程序通过设备的 I/O 端口空间,以及存储器空间完成数据的交换。例如,网卡一般 将自己的内部寄存器映射为设备的 I/O 端口,而显示卡则利用大量的存储器空间作为视频信息的存储空间。利用这些地址空间,驱动程序可以向外设发送指定的操作指令。通常来讲, 由于外设的操作耗时较长,因此,当处理器实际执行了操作指令之后,驱动程序可采用查询方式等待外设完成操作。 中断方式 查

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档