火龙果软件Linux驱动开发培训2精要.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文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * 软中断 软中断 优先级 功能 HI_SOFTIRQ 0 优先级高的tasklet TIMER_SOFTIRQ 1 定时器的下半部 NET_TX_SOFTIRQ 2 发送网络数据包 NET_RX_SOFTIRQ 3 接受网络数据包 SCSI_SOFTIRQ 4 SCSI的下半部 TASKLET_SOFTIRQ 5 tasklet 内核定时器 驱动程序可以注册一个内核定时器,来指定一个函数在未来某个时间执行 定时器只执行一次,当超时后就会被内核调用一次。 超时值是一个jiffies值,当jiffies值大于超时值timer-expires时,timer-function函数就会被运行 中断处理 中断机制提供了硬件和软件之间异步传递信息的方式 硬件设备在发生某个事件时通过中断通知软件进行处理 中断实现了硬件设备按需获得处理器关注的机制,与查询方式相比可以大大节省CPU时间 全局中断控制 全局中断控制包括启用和禁用中断 cli用来禁用所有的中断 sti用来取消中断禁用 尽量不要对全局中断进行操作 驱动程序绝大多数都不需要再用禁用/启用全局中断的形式来处理竞争问题 安装中断处理程序 安装中断处理程序是通过request_irq调用来进行 当我们安装好中断处理程序后,硬件一旦产生中断,中断处理程序ISR就会被执行,以处理中断 驱动程序可以选择在初始化的时候安装中断处理程序,也可以在用户打开设备时再安装 自动检测中断号 第一种检测方式是假定设备是用一些默认的定义,传统的PC设备irq和ioport地址是以固定形式搭配的 第二种方式是在检测硬件的时候,硬件设备通过某个I/O端口或寄存器来告诉驱动程序中断号 第三种方式是直接通知硬件产生一个中断,然后查看中断状态寄存器,看看哪个中断号有动作 中断处理程序的实现 中断处理程序ISR是在中断发生时被调用的用来处理中断的函数 在中断期间运行,不能执行有可能睡眠的操作,不能同用户空间交换数据,不能调用schedule函数放弃调度 实现中断处理有一个原则,就是尽可能快地处理并返回,冗长的计算处理工作应该交给tasklet或任务队列在安全的时间内进行 驱动程序里可以调用disable_irq和enable_irq来禁用和启用一个中断 Tasklet和下半部处理 中断处理程序可以分成两部分 上半部是实际的ISR,在中断发生时被调用 下半部是tasklet或任务,被上半部调度,在稍后的安全时间被调用 上半部通常仅仅把设备数据和必要的信息保存到一个特定缓冲区,就非常快地返回 底半步执行其他必要的操作,如对数据进行处理,启动I/O操作,唤醒用户进程 底半步同样要遵守中断期间的限制 通常推荐使用tasklet来实现底半部处理程序 中断共享 中断共享和体系结构及硬件有很大关系 著名的电平触发和边沿触发中断信号线 当我们请求中断时,在标志位中传递SA_IRQ,并且dev_id不能为NULL dev_id作为中断处理的标示,区分了共享中断的不同处理程序 注意在共享中断处理程序中不能disable_irq,因为中断不是独占的 中断驱动的I/O 中断驱动的I/O能够实现异步的read,write 读写操作和设备数据传送通过缓冲联系起来能够大大提高系统吞吐率 要实现中断驱动的I/O,硬件应该按照一定的模式产生中断 对于输入数据来说,当新的数据已经到达并且处理器已经准备好接受数据,设备就产生中断 对于输出数据来说,当设备已经准备好接受新数据或数据传输已经成功完成,设备发出中断 www.FarS 谢谢! 成功之路 * * * * * * * * * * * * * * * * * * * * * The successs road Linux设备驱动高级开发 今天的内容 Linux内存管理机制 内存分配与存储器映射 高速缓存管理 mmap设备操作 在内核中描述时间 使用任务队列 内核定时器 硬件中断处理流程 Linux内核中断子系统 安装中断处理程序 上半部/下半部处理 中断共享 Linux内核内存管理 Linux系统中地址分类 物理地址 总线地址 内核逻辑地址 内核虚拟地址 用户空间虚拟地址 高端,低端内存与寻址空间限制 32位系统寻址空间为2的32次方,即4GB 某些32位系统硬件寻址能力超过4GB,pentiumpro是36位物理地址 内存采用动态的逻辑映射方式在32位地址空间里访问超过4GB的内存 内核内存分配 内核程序员获得内存的方法kmalloc,使用方法类似于用户空间的malloc版本 kmalloc传递不同标志,导致该函数的不同行为 GFP_KERNEL GFP_BUFFER GFP_

文档评论(0)

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

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

1亿VIP精品文档

相关文档