- 1、本文档共120页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LINUX设备驱动开发经验总结解析
I/O 内存函数. 旧的, 类型不安全的存取 I/O 内存的函数. unsigned readb(address); unsigned readw(address); unsigned readl(address); void writeb(unsigned value, address); void writew(unsigned value, address); void writel(unsigned value, address); memset_io(address, value, count); memcpy_fromio(dest, source, nbytes); memcpy_toio(dest, source, nbytes); 内容提要 设备驱动简介 建立和运行模块 字符驱动 调试技术 并发和竞争 高级字符驱动操作 时间,延时和延后工作 分配内存 与硬件通讯 中断处理 块设备驱动 注册注销中断处理 调用这个注册和注销一个中断处理. #include linux/interrupt.h int request_irq( unsigned int irq, 请求中断号 irqreturn_t (*handler)( ), 中断服务程序 unsigned long flags, 是否共享 const char *dev_name,设备名称/proc/interrupts 来显示中断的拥有者 void *dev_id);用户数据 void free_irq(unsigned int irq, void *dev_id); 中断介绍 硬中断是外部设备对CPU的中断,软中断通常是硬中断服务程序对内核的中断,信号则是由内核(或其他进程)对某个进程的中断。软中断的一种典型应用就是所谓的“下半部”(bottom half),它的得名来自于将硬件中断处理分离成“上半部”和“下半部”两个阶段的机制:上半部在屏蔽中断的上下文中运行,用于完成关键性的处理动作;而下半部则相对来说并不是非常紧急的,通常还是比较耗时的,因此由系统自行安排运行时机,不在中断服务上下文中执行 软中断,用软件方式进行模拟,实现宏观上的异步执行效果。很多情况下,软中断和信号有些类似 注册注销中断处理 调用这个注册和注销一个中断处理. #include linux/interrupt.h int request_irq( unsigned int irq, 请求中断号 irqreturn_t (*handler)( ), 中断服务程序 unsigned long flags, 是否共享 const char *dev_name,设备名称/proc/interrupts 来显示中断的拥有者 void *dev_id);用户数据 void free_irq(unsigned int irq, void *dev_id); 中断申请标志 给 request_irq 的标志. SA_INTERRUPT 当置位了, 这表示一个快速中断处理. 快速处理在当前处理器上禁止中断来执行 SA_SHIRQ 安装一个共享的处理者 #include asm/signal.h SA_INTERRUPT SA_SHIRQ SA_SAMPLE_RANDOM 中断的文件系统节点 报告硬件中断和安装的处理者的文件系统节点. 可以获取当前系统得中断号和每个中断产生的中断次数等信息 /proc/interrupts /proc/stat 驱动使用探测函数 驱动使用的函数, 探测决定哪个中断线被设备在使用. probe_irq_on这个函数返回一个未安排的中断的位掩码. 驱动必须保留返回的位掩码, 并且在后面传递给 probe_irq_off. 在这个调用之后, 驱动应当安排它的设备产生至少一次中断 供探测使用 probe_irq_off 的返回值是被探测的中断号. 中断处理 汇编语言文件处理很多机器级别的工作., 汇编代码被安排到每个可能的中断. 在每个情况下, 这个代码将中断号压栈并且跳转到一个通用段, 称为 do_IRQ, 在 irq.c 中定义.do_IRQ 做的第一件事是确认中断以便中断控制器能够继续其他事情. 它接着获取给定 IRQ 号的一个自旋锁, 因此阻止任何其他 CPU 处理这个 IRQ. 它清除几个状态位(包括称为 IRQ_WAITING 的一个, 我们很快会看到它)并且接着查看这个特殊 IRQ 的处理者. 如果没有处理者, 什么不作; 自旋锁释放, 任何挂起的软件中断被处理, 最后 do_IRQ 返回. 使能和禁止中断 可以使能和禁止中断。共享处理不使用这个函数. void disable_irq(int irq); void disable
您可能关注的文档
- Leica M镜头详谈解析.doc
- Lecture 8 Deformation behavior for unsaturated soils解析.ppt
- Lesson 2 Did you help your mother do housework解析.ppt
- lesson 2 船舶尺度与吨位解析.ppt
- Lesson 40 When Is Your Birthday解析.ppt
- Lesson I Pplanning for a picnic制作三明治解析.ppt
- Lesson-6Stay-Away-from-the-Hospital课件解析.ppt
- lesson08 Java异常和异常处理解析.ppt
- LFM脉冲压缩雷达标准实验报告解析.doc
- LFM雷达系统设计与实现实验指导书(第一版sim)解析.doc
- 河南省郑州市第一中学2017-2018学年高一下学期周测物理试题(325)扫描版含答案.doc
- 山西省怀仁县第一中学2017-2018学年高二下学期第一次月考生物试题扫描版.doc
- 河南省六市高三下学期第一次联考试题(3月)理科综合扫描版含答案.doc
- 四川省高三全国Ⅲ卷冲刺演练(一)文综地理试卷扫描版含答案.doc
- 河南省洛阳市高三第二次统考文综试卷扫描版含答案.doc
- 甘肃省靖远县高三下学期第二次联考理科综合试题扫描版含答案.doc
- 问题导学法在办公场景中的实施策略及效果评估.docx
- 退休后的个人品牌打造与传播策略.docx
- 问题解决在办公流程优化中的应用.docx
- 问题导向的办公环境创新设计.docx
文档评论(0)