基于嵌入式 L inux的中断驱动程序设计.docVIP

基于嵌入式 L inux的中断驱动程序设计.doc

  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文档。上传文档
查看更多
基于嵌入式 L inux的中断驱动程序设计

基于嵌入式 L inux的中断驱动程序设计 摘 要 在现代计算机系统中,中断不仅是中央处理机与外部设备并行工作的基础之一,而且还是多道程序并发执行的动力,乃至整个操作系统稳定、高效运行的推动力。在我们的RTOS中,能否对实时中断请求及时响应将极大的影响整个系统的实时性能。Linux的中断分为两种,一种是由CPU外部产生的,称为“外部中断”, 另一种称为“陷阱”,一般是由软件产生的。L inux操作系统下 ,设备驱动程序的实现原理和编写方法 ,然后说明了中断处理在设备驱动程序中的应用 ,并详细论述了中断方式下 ,编写设备驱动程序的具体开发流程 ,进一步分析了编写中断处理程序时所用到一些数据结构。应用证明在编写linux设备驱动程序的时候,采用中断方式的程序效率会更高。 关键词: Linux;设备驱动;中断;嵌入式操作系统。 0 引言 计算机技术发展到今天,嵌入式实时计算机系统已经成为其中品种最繁多,用户数量最庞大,应用市场最广阔的计算机系统,并且已经深入到了航天科研、工程设计、军事技术、以及人们生产、生活等诸方面。而嵌入式实时操作系统,作为嵌入式计算机系统最重要的软件核心,也就成了该领域最重要的研究方向实时操作系统(RTOS--Real Time Operating System)是指一个能够在指定的时间范围内完成特定的功能或者对外部的异步事件做出响应的操作系统。由于Linux开放源码,近年来发展势头迅猛,已经发展成为了一个健壮可靠的高性能操作系统。由于开放源码,Linux用户可以充分利用这种透明性, 最大限度地控制系统开发的进度和开发成本。而且,Linux是模块化的操作系统,提供了优秀的可扩展功能,用户可以方便地删除不需要的模块,根据自己的需要,配霄满足自己需求的系统特性和功能。另外,凭借着优良的内核代码组织结构,高效健壮的系统体系结构,便于实施的安全策略,以及丰富的开放应用软件等众多优点,Linux更是成为了当代最具有影响力的主流操作系统之一,发展潜力非常可观。因此,在实时应用方面,愈柬愈多的嵌入式系统开发人员将目光转向了Linux,试矧将Linux打造成为一个优秀的嵌入式实时操作系统,使得Linux在嵌入式实时应用领域中得到越来越广泛的应用。 1.1嵌入式 Linux的中断概述 Linux的中断宏观分为两种:软中断和硬中断。声明一下,这里的软和硬的意思是指和软件相关以及和硬件相关,而不是软件实现的中断或硬件实现的中断。软中断就是“信号机制”。软中断不是软件中断。Linux通过信号来产生对进程的各种中断操作,我们现在知道的信号共有31个,其具体内容这里略过。一般来说,软中断是由内核机制的触发事件引起的(例如进程运行超时),但是不可忽视有大量的软中断也是由于和硬件有关的中断引起的,例如当打印机端口产生一个硬件中断时,会通知和硬件相关的硬中断,硬中断就会产生一个软中断并送到操作系统内核里,这样内核就会根据这个软中断唤醒睡眠在打印机任务队列中的处理进程。硬中断就是通常意义上的“中断处理程序”,它是直接处理由硬件发过来的中断信号的。当硬中断收到它应当处理的中断信号以后,就回去自己驱动的设备上去看看设备的状态寄存器以了解发生了什么事情,并进行相应的操作。 嵌入式 Linux的中断机制 在现代计算机系统中,中断不仅是中央处理机与外部设备并行工作的基础之一,而且还是多道程序并发执行的动力,乃至整个操作系统稳定、高效运行的推动力。在我们的RTOS中,能否对实时中断请求及时响应将极大的影响整个系统的实时性能。Linux的中断分为两种,一种是由CPU外部产生的,称为“外部中断”, 另一种称为“陷阱”,一般是由软件产生的,如X86中的“INTn”,在程序中有意地产生的,所以是“同步”的。另外,在Linux中,还有一种跟中断相似的机制,称为“异常”,一般也是异步的。对以上三种类似的机制,标准Linux内核的处理过程足基本相同的:每个中断、异常都用一个介于O到255之间的数束标识,称为“向量”。在执行完当前的指令之后,或者执行当前指令的中途,内核根据中断向量源所提供的“向量”,在位于内存中某处的一张表(称为中断向量表IDT)中查找到相应的服务程序入口,并且调用该服务程序。外部中断的向量号往往是由硬件设置决定的,陷阱的向量号则包含在“自陷”指令中,而各种异常的向量号则是在CPU 的硬件结构中预先规定好的。执行中断服务程序的时候,内核必须处于内核态”1。如果是在用户进程运行时发生了中断,系统就必须先切换到内核模式。中断处理完毕后,内核将控制返回给用户进程,用户进程能够从被打断的位胃继续运行。如果中断发生的时候,内核正在执行一个内核任务,系统已经处于内核念,那么中断处理将会打断该内核任务的执行,中断处理返[u1的时候控制权将会被返还到先酌被中断的内核任务

文档评论(0)

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

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

1亿VIP精品文档

相关文档