第一章 设备驱动程序.pptVIP

  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下的设备驱动程序 驱动程序开发实例 PB定制Wince内核 BSP和SDK 嵌入式应用程序开发 EVC VS2005 J2ME开发嵌入式应用程序 推荐的书籍 嵌入式系统接口设计与Linux驱动程序开发 刘淼编著 北京航空航天大学出版社 Windows CE.net内核定制及应用开发 周毓林、宁杨、陆贵强、付林林编著 电子工业出版社 Windows CE实用开发技术 张冬泉、谭南林、王雪梅、焦风川编著 电子工业出版社 精通J2ME嵌入式软件开发 杨军、杨建编著 电子工业出版社 EVC高级编程及其应用开发(Embedded Visual C++嵌入式编程)汪兵、李存斌、陈鹏编著 中国水利水电出版社 Linux下的设备驱动程序 设备驱动程序的作用 驱动程序与应用程序的区别 设备驱动程序的分类 设备驱动程序在操作系统中的位置 机制与策略 设备驱动程序的基本结构 设备驱动程序如何被使用 一个简单设备驱动程序实例 用户态与内核态 多数操作系统都会把内核和运行在其上的应用程序分为2个层次管理。 内核态有较高的权限,可以控制处理器内存的映射和分配方式,访问外设空间和处理器的特殊状态寄存器,控制中断和DMA等。 用户态则只能运行系统上的应用程序。 从用户态到内核态的切换通常可以通过软件中断实现。 在有MMU的处理器上,Linux系统把内核重新映射在3GB以上的虚拟地址空间——内核空间。 每一个应用程序或进程都通过MMU建立独立寻址空间——用户空间。 一个进程是不可以(因为有MMU映射的保护)随便修改和访问另一个进程中的数据和代码的。 进程之间要想进行数据交互,或者经过内核传递,或者通过内核映射共享内存。 驱动程序作为系统内核的一部分,它工作在? 应用程序工作在? 不能直接通过指针,把用户态的数据地址传递给内核。 要想在应用程序和驱动程序之间传递数据(指针),就需要经过转换。把用户态“看到”的空间地址转换成内核态可访问的地址。 get_user:从用户空间获得指定类型的数据 put_user:向用户空间写入指定类型的数据 copy_from_user:从用户空间缓冲区复制数据到内核空间的缓冲区 copy_to_user:从内核空间的缓冲区复制数据到用户空间的缓冲区 设备驱动程序的作用 设备驱动程序将复杂的硬件抽象成一个结构良好的设备,并通过提供统一的程序接口为系统的其它部分提供使用设备的能力和方法。 设备驱动程序(应该只是)为系统的其它部分提供各种使用设备的能力,使用设备的方法应该由应用程序决定。 Linux下对外设的访问只能通过驱动程序 Linux对于驱动程序有统一的接口,以文件的形式定义系统的驱动程序: Open、Release、read、write、ioctl… 驱动程序是内核的一部分,可以使用中断、DMA等操作 驱动程序需要在用户态和内核态之间传递数据 驱动程序与应用程序的区别 应用程序一般有一个main函数,从头到尾执行一个任务;驱动程序却不同,它没有main函数,通过使用宏module_init(初始化函数名); 将初始化函数加入内核全局初始化函数列表中,在内核初始化时执行驱动的初始化函数,从而完成驱动的初始化和注册,之后驱动便停止等待被应用软件调用。驱动程序中有一个宏moudule_exit(退出处理函数名)注册退出处理函数。它在驱动退出时被调用。 应用程序可以和GLIBC库连接,因此可以包含标准的头文件,比如stdio.h stdlib.h,在驱动程序中是不能使用标准C库的,因此不能调用所有的C库函数,比如输出打印函数只能使用内核的printk函数,包含的头文件只能是内核的头文件,比如linux/module.h。 设备驱动程序的分类 字符设备驱动程序 各种串行接口,并行接口等。 块设备驱动程序 磁盘设备等 网络设备驱动程序 网卡等。 杂项设备驱动程序 不属于上述三种设备之外的一些设备,如SCSI,时钟等。 在操作系统中的位置 设备驱动程序是内核代码的一部分。 驱动程序的地址空间是内核的地址空间。 驱动程序的代码直接对设备硬件(实际是设备的各种寄存器)进行控制(实际就是读写操作)。 应用程序通过操作系统的系统调用执行相应的驱动程序函数。中断则直接执行相应的中断程序代码。 设备驱动程序的file_operations结构体的地址被注册到内核中的设备链表中。 块设备和字符设备以设备文件的方式建立在文件系统中的/dev目录下,而且每个设备都有一个主设备号和一个次设备号。 .主设备号和次设备号 传统方式中的设备管理中,除了设备类型外,内核还需要一对称作主次设备号的参数,才能唯一标识一个设备。主设备号相同的设备使用相同的驱动程序,次设备号用于区分具体设备的实例。比如PC机中的IDE

文档评论(0)

wxc6688 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档