嵌入式系统驱动开发课件.pptVIP

  1. 1、本文档共133页,可阅读全部内容。
  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文档。上传文档
查看更多

嵌入式系统设备驱动程序DeviceDrivers

设备驱动程序和内核接口Linux内核必须能够用标准的方式和设备n驱动程序交互。每一类的设备驱动程序:字符、块和网络,都提供了通用的接口供内核在需要请求它们的服务的时候使用。这些通用的接口意味着内核可以完全相同地看待通常是非常不同的设备和它们的设备驱动程序。例如,SCSI和IDE磁盘的行为非常不同,但是Linux内核对它们使用相同的接口。

Linux非常地动态,每一次Linux内核启动,它都可能遇到不同的物理设备从而需要不同的设备驱动程序。Linux允许你在建立内核时通过配置脚本,将设备驱动程序包含在内核中。n

在系统启动时,这些设备驱动程序初始化,此时它们可能没有发现自己可以控制的任何硬件。其它驱动程序可以在需要的时候作为内核模块加载。n

为了处理设备驱动程序的这种动态特性,设备驱动程序要在它们初始化时向内核登记。Linux维护已经登记的设备驱动程序列表,作为和它们接口的一部分。这些列表包括了例程指针和支持这一类设备的接口信息。n

字符设备字符设备,Linux中最简单的设备,可以n象文件一样访问。应用程序使用标准系统调用打开、读、写和关闭字符设备,完全把它们作为普通文件一样对待。甚至正在被PPP守护进程使用,用于将一个Linux系统连接到网上的modem,也被看作一个普通文件。当字符设备初始化时,它的设备驱动程序向Linux内核登记,在chrdevs向量表增加一个device_struct数据结构条目。这个设备的主设备标识符

n当代表一个字符设备(例如/dev/cua0)的字符特殊文件打开时,内核必须做一些事情,从而去调用正确的字符设备驱动程序的文件操作例程。和普通文件或目录一样,每一个设备特殊文件都用VFSI节点表达。这个字符特殊文件的VFSinode(实际上所有的设备特殊文件)包含有设备的major和minor标识符。这个VFSI节点由底层的文件系统(例如EXT2)

每一个VFSI节点都关联着一组文件操作,它们依赖于I节点所代表的文件系统对象的不同而不同。不管代表一个字符特殊文件的VFSI节点什么时候创建,它的文件操作都被设置成字符设备的缺省操作。实际上只有一种文件操作:open操作。当一个应用程序打开这个字符特殊文件时,通用的open文件操作使用设备的主设备标识符作为chrdevs向量表中的索引,取出这种特殊设备的文件操作块。它也n

Linux设备驱动程序及开发

Linux设备驱动程序概述Linux设备驱动程序是处理或操作硬件控制器的软件,被集成在内核中,是常驻内存的低级硬件处理程序的共享库,设备驱动程序是系统对设备的抽象管理与控制。nLinux允许设备驱动程序作为内核可加载模块实现,即除了可以在系统启动时进行注册外,还可以在启动后进行加载注册。n

操作系统的目标之一是向用户掩盖系统硬件设备的特殊性。例如,虚拟文件系统呈现给用户一个统一的文件系统视图,而和底层的物理设备无关。n

CPU不是系统中唯一的智能设备,每一个物理设备都由它自己的硬件控制器。键盘、鼠标和串行口由SuperIO芯片控制,IDE磁盘由IDE控制器控制,SCSI磁盘由SCSI控制器控制,等等。n

每一个硬件控制器都由自己的控制和状态寄存器(CSR),而且不同的设备有不同的寄存器。CSR用于启动和停止设备,初始化设备和诊断它的问题。管理这些硬件控制器的代码不是放在每一个应用程序里边,而是放在Linux内核。这些处理或者管理硬件控制器的软件叫做设备驱动程序。n

本质上,Linux内核的设备驱动程序是特权的、驻留在内存的、低级硬件控制例程的共享库。正是Linux的设备驱动程序处理它们所管理的设备的特性。n

Linux的一个基本特点是它抽象了对设备的处理。所有的硬件设备都象常规文件一样看待:它们可以使用和操作文件相同的、标准的系统调用来打开、关闭和读写。n

系统中的每一个设备都用一个设备特殊文件代表。例如系统中第一个IDE硬盘用/dev/hda表示。对于块(磁盘)和字符设备,这些设备特殊文件用mknod命令创建,并使用主(major)和次(minor)设备编号来描述设备。n

Linux支持三种类型的硬件设备:字符、块和网络。n

Linux有许多不同的设备驱动程序,它们都具有一些一般的属性:nKernelcodennnnnnKenelinterfacesKernelmechanismsandservicesLoadableConfigurableDynamic

Kernelcodenn设备驱动程序和内核中的其它代码相似,是kenel的一部分,如果发生错误,可能严重损害系统。一个粗劣的驱动程序甚至可能摧毁系统,可能破坏文件系统,丢失数据。

Kenelinterfacesnn设备驱动程序必须向Li

文档评论(0)

157****5400 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档