系统设备驱动程序概述.pdfVIP

  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.1 Linux 设备驱动程序分类 Linux 设备驱动程序在 Linux 的内核源代码中占有很 大的比例,源代码的长度日益增加,主要是驱动程序的增加。在 Linux 内核的不断 升级过程中,驱动程序的结构还是相对稳定。在 2.0.xx 到 2.2.xx 的变动里,驱动 程序的编写做了一些改变,但是从 2.0.xx 的驱动到 2.2.xx 的移植只需做少量的工 作。 Linux 系统的设备分为字符设备 (char device) ,块设备 (block device) 和网 络设备 (network device) 三种。字符设备是指存取时没有缓存的设备。块设备的读 写都有缓存来支持,并且块设备必须能够随机存取 (random access) ,字符设备则 没有这个要求。典型的字符设备包括鼠标,键盘,串行口等。块设备主要包括硬盘 软盘设备, CD-ROM等。一个文件系统要安装进入操作系统必须在块设备上。网络 设备在 Linux 里做专门的处理。 Linux 的网络系统主要是基于 BSD unix 的 socket 机制。在系统和驱动程序之间定义有专门的数据结构 (sk_buff) 进行数据的传递。 系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支 持。 1.2 编写驱动程序的一些基本概念无论是什么操作系统的驱动程序,都有一些 通用的概念。操作系统提供给驱动程序的支持也大致相同。下面简单介绍一下网络 设备驱动程序的一些基本要求。 1.2.1 发送和接收这是一个网络设备最基本的功 能。一块网卡所做的无非就是收发工作。所以驱动程序里要告诉系统你的发送函数 在哪里,系统在有数据要发送时就会调用你的发送程序。还有驱动程序由于是直接 操纵硬件的,所以网络硬件有数据收到最先能得到这个数据的也就是驱动程序,它 负责把这些原始数据进行必要的处理然后送给系统。这里,操作系统必须要提供两 个机制,一个是找到驱动程序的发送函数,一个是驱动程序把收到的数据送给系 统。 1.2.2 中断中断在现代计算机结构中有重要的地位。操作系统必须提供驱动程 序响应中断的能力。一般是把一个中断处理程序注册到系统中去。操作系统在硬件 中断发生后调用驱动程序的处理程序。 Linux 支持中断的共享,即多个设备共享一 个中断。 1.2.3 时钟在实现驱动程序时,很多地方会用到时钟。如某些协议里的超 时处理,没有中断机制的硬件的轮询等。操作系统应为驱动程序提供定时机制。一 般是在预定的时间过了以后回调注册的时钟函数。在网络驱动程序中,如果硬件没 有中断功能,定时器可以提供轮询 (poll) 方式对硬件进行存取。或者是实现某些协 议时需要的超时重传等。二 .Linux 系统网络设备驱动程序 2.1 网络驱动程序的结 构所有的 Linux 网络驱动程序遵循通用的接口。设计时采用的是面向对象的方法。 一个设备就是一个对象 (device 结构 ) ,它内部有自己的数据和方法。每一个设备 的方法被调用时的第一个参数都是这个设备对象本身。这样这个方法就可以存取自 身的数据 ( 类似面向对象程序设计时的 this 引用 ) 。一个网络设备最基本的方法有 初始化、发送和接收。 |deliver packets||receive packets queue||(dev_queue_xmit())||them(netif_rx())|||//|||methods and variables(initialize,open,close,hard_xmit,||interrupt handler,config,resources,status.)|||//|||send to hardware||receivce from hardware|||//|||hardware media| 初始

文档评论(0)

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

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

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档