嵌入式Linux系统开发与应用 教学配套课件 康维新 第5章 嵌入式设备驱动.pdfVIP

嵌入式Linux系统开发与应用 教学配套课件 康维新 第5章 嵌入式设备驱动.pdf

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 嵌入式设备驱动 第5章 嵌入式设备驱动 5.1 Linux下设备驱动概述 5.2 设备驱动程序的结构 5.3 字符设备驱动 5.4 LCD设备驱动 5.5 块设备驱动 5.6 键盘驱动 5.7 Linux网络驱动程序 5.8 触摸屏接口设计与Linux驱动编程 5.1 Linux下设备驱动概述 Linux系统把内核和运行在其上的应用程序分为两个层次 ,也就是所谓的“ 内核态”和“用户态” 。 当一个任务(进程)执行系统调用而陷入内核代码中执 行时,我们就称进程处于内核运行态(或简称为内核态)。 此时处理器处于特权级最高的(0级)内核代码中执行。当 进程处于内核态时,执行的内核代码会使用当前进程的内核 栈。每个进程都有自己的内核栈。 当进程在执行用户自己的代码时,则称其处于用户运行 态(用户态)。即此时处理器在特权级最低的(3级)用户 代码中运行。当正在执行用户程序而突然被中断程序中断时 ,此时用户程序也可以象征性地称为处于进程的内核态。 5.1 Linux下设备驱动概述 因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有 些类似。内核态与用户态是操作系统的两种运行级别。 Linux进程的4GB地址空间,3G-4G部分大家是共享的,是内核态的地址空间, 这里存放在整个内核的代码和所有的内核模块,以及内核所维护的数据。用户运行 一个程序,该程序所创建的进程开始是运行在用户态的,如果要执行文件操作,网 络数据发送等操作,必须通过write ,send等系统调用,这些系统调用会调用内核 中的代码来完成操作,这时,必须切换到内核态,然后进入3GB-4GB 中的内核地 址空间去执行这些代码完成操作,完成后,切换到用户态。这样,用户态的程序就 不能随意操作内核地址空间,具有一定的安全保护作用。 在内核态下,CPU可执行任何指令,在用户态下CPU只能执行非特权指令。当 CPU处于内核态,可以随意进入用户态;而当CPU处于用户态,只能通过中断的方 式进入内核态。一般程序一开始都是运行于用户态,当程序需要使用系统资源时, 就必须通过调用软中断进入内核态。 5.1 Linux下设备驱动概述 5.1.1 设备的分类 Linux 内核把系统设备被分为三类,块设备、字符设备和网络设备。  字符设备是以字符为单位输入输出数据的设备,一般不需要使用缓冲 区而直接对它进行读写。  块设备是以一定大小的数据块为单位输入输出数据的,一般要使用缓 冲区在设备与内存之间传送数据。 字符设备和块设备可以向文件一样被访问,例如,驱动程序都会实现open (打开)、 close (关闭,或叫release )、read (读取)、write (写入)或seek (定位)等操作。  网络设备在Linux系统中一类比较特殊的设备,是通过通信网络传输 数据的设备,一般指与通信网络连接的网络适配器(网卡)等。它不 像字符设备和块设备那样通过对应的设备文件节点来访问,内核也不 再通过read或write等系统调用去访问网络设备。Linux使用套接口 (socket)以文件I/O方式提供了对网络数据的访问。 5.1 Linux下设备驱动概述 5.1.2 设备文件 Linux把所有设备都看作是特殊的文件,都纳入文件系统的范畴,例如 ,系统中第一个IDE硬盘使用/dev/hda来表示。系统通过处理文件的接 口—虚拟文件系统VFS来管理和控制各种设备。从抽象的观点出发, Linux 的设备又称为设备文件。 Linux抽象了对硬件的处理,所有的硬件设备都可以作为普通文件来看 待,对它们可以使用和操作文件相同,使用标准的系统调用接口来完 成打开、关闭、读写和I/O控制等操作,驱动程序的主要任务也就是要 实现这些系统调用函数。由于引入了设备文件这一概念,Linux为文件 和设备提供了一致的用户接口,对用户来说,设备文件与普通文件并 无区别。例如,用同一write()系统调用既可以向普通文件写入数据, 也可以通过write() 向/dev/lp0设备文件写入数据,从而

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档