使用windriver生成PCIpci device驱动下载,怎么在中断处理中,清除中断状态位

使用windriver生成PCI驱动,如何在中断处理中,清除中断状态位 - 驱动开发当前位置:& &&&使用windriver生成PCI驱动,如何在中断处理中,清除使用windriver生成PCI驱动,如何在中断处理中,清除中断状态位&&网友分享于:&&浏览:165次使用windriver生成PCI驱动,怎么在中断处理中,清除中断状态位使用wd_intenable()使能中断,该函数中注册了中断处理函数。现在能收到PCI中断,但是进入中断处理函数后不知道如何将中断状态寄存器清零,导致板子发送一次中断,中断处理程序被死循环调用。看到网上有两种解决方法:1、使用wd_intenable()参数中的传输命令序列,在内核模式下直接清空中断状态寄存器,这样的话我如何获得中断状态寄存器的地址,以及写成什么表示清零了呢;2、进入中断后使用wd_intdisable()禁止中断,执行处理,处理完后再调用wd_intenable()重新打开中断,这样试验时发现wd_intdisable()出现死循环,函数返回不了。请高手解释两种情况,以及如何正确清除中断。------解决方案--------------------
windriver的帮助文档里面写的很清楚啊
------解决方案--------------------
问一下:中断操作应该是跟你的PCI设备相关吧?设备手册里面没有说怎么进行中断清楚么?
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有询问XP下Windriver清Pcie中断问题
[问题点数:100分]
询问XP下Windriver清Pcie中断问题
[问题点数:100分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年11月 硬件/嵌入开发大版内专家分月排行榜第一2014年6月 硬件/嵌入开发大版内专家分月排行榜第一
2014年12月 硬件/嵌入开发大版内专家分月排行榜第二2014年8月 硬件/嵌入开发大版内专家分月排行榜第二2010年7月 硬件/嵌入开发大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。中断处理系统一般是由什么组成?? - 中断处理系统一般都是由什么组成?
| 中断处理系统一般是由什么组成??
中断处理系统一般都是由什么组成?
用户:三月27日
中断处理系统一般是由什么组成??如题!
最佳答案用户:guangfjy下面从网络上,你要帮助Linux的采用了多种不同的硬件来执行许多不同的任务。(包括司机)的视频显示装置中,一个IDE硬盘驱动器设备。这些设备可以被同步驱动,我们可以发送一个请求到执行的一组操作(例如,内存中的数据将被写入到磁盘),然后等待,直到执行完成。虽然这种方法的作品,却是低效的,因为操作系统必须等待每个操作完成的,所以操作系统将在“忙等待”花费了大量的时间。更有效的方法是执行请求,然后转向其他任务。当设备再次完成请求中断时通过操作系统通知。这种系统可以存在多个未完成的任务。无论什么样的工作,为CPU,产生一个中断,允许器件必须提供必要的硬件支持。几乎所有通用的Alpha AXP处理器,如使用近似的方法。一些物理CPU的引脚设计改变电压,导致CPU停止目前的工作,并开始执行一个特殊的代码用于处理中断的中断处理程序(如从 5 V变为-5V)。其中一个引脚连接到一个周期的时钟和接收一个中断每千分之一秒,其他引脚可以连接到系统中的其他设备,如SCSI控制器。系统通常用于传送信号到CPU的中断引脚分组前的设备中断在中断控制器。这节省了CPU的中断引脚数量,同时增加了系统设计的灵活性。通过屏蔽这个中断控制器控制中断状态寄存器。通过设置特定的位掩码中的寄存器可以启用或禁用中断,读状态寄存器可用的系统,是目前活跃中断。某些系统中断是硬连接,如实时时钟周期性定时器可以固定地连接到中断控制器的引脚3。而另一些人只能被连接到控制器由一根针插入特定的ISA或PCI插槽控制器卡决定。如中断控制器的引脚4可以连接到PCI插槽编号0,但可能有一天会这个插槽插入件在几天之内的以太网卡将被替换SCSI控制器。每个系统都有其自身的短期中断路由机制,而操作系统也应该能够灵活地处理这些情况。大多数现代通用微处理器用类似的方法来处理中断。硬件中断发生时,CPU停止执行当前指令将跳转到中断处理代码在内存中包含的中断处理代码或分支指令继续执行。这些代码是在一个特殊的CPU模式:中断模式。典型地,在这种模式下有没有其他中断发生。但也有例外,一些CPU将中断优先级分类,这时候一个更高优先级的中断可能发生。这意味着,你必须精心准备的第一级的中断处理代码,中断处理过程都应该有自己的存储堆栈之前,中断处理由CPU执行状态(CPU通用寄存器和上下文)。部分CPU有一组特殊的寄存器 - 他们只存在于中断模式,中断模式,您可以使用这些寄存器来保持所需执行的执行上下文。当中断处理完成CPU状态将被重新存储,也将被释放,而中断。CPU将继续做什么,需要做的中断发生之前。更精更好的中断处理代码,这将减少拥堵在中断的时间和频率上的操作系统。7.1可编程中断控制器,系统设计师可以自由选择的中断结构,一般会使用IBM PC兼容的英特尔82C59A-2 CMOS可编程中断控制器或其衍生物。控制器,PC上诞生之前就已经产生,这也反映在记忆体位置,坐落在著名的ISA寄存器的可编程性。非英特尔的系统,如一个基于PC的Alpha AXP架构从这些限制,他们经常使用的各种中断控制器。图7.1显示了两个级联8个控制器,每个人都有一个屏蔽的中断状态寄存器:PIC1和PIC2。ISA的I / O空间0X21和0XA1的地方位于这两个屏蔽寄存器,状态寄存器位于0x20和0xA0的。在这方面进行了特定的位掩码寄存器将使中断,写0盾。但不幸的是,中断屏蔽寄存器是只写的,所以你可以不读您的书面价值。这也意味着,Linux必须保持一个屏蔽寄存器写入值的本地副本。一般在中断使能和屏蔽例程修改这些保存的值,而这些全屏蔽码写入寄存器。当中断发生时,中断处理代码读取中断状态寄存器(ISR)。人们将会看到一个0x20的ISR中断寄存器16的低8 0XA0在ISR其高八。在ISR中断这种0XA0将被视为第一个系统中断9。PIC1在第二级上使用,因为它不用于任何其他关连PIC2有用性,PIC2 PIC1任何干扰将导致在第二位被置位。7.2初始化中断处理数据结构中断请求时建立的设备驱动程序的中断控制系统的处理核心数据结构。为了完成这个任务,设备驱动程序使用了Linux内核的功能请求中断,使中断和可屏蔽中断。每个设备驱动程序将调用这些程序来注册中断处理例程地址。由于传统的PC体系结构的某些中断的是固定的,驱动程序仅需要进行初始化时,其中断请求。软盘设备驱动程序以这种方式使用,它的中断数始终是6。有时设备驱动程序可能不知道的设备使用该中断号。PCI设备驱动程序,这也不是什么大问题,他们总能知道其中断号。但对于ISA设备驱动程序是没有简便的方法获得的中断号。Linux设备驱动程序的测试让他们中断号来解决这个问题。首先,迫使设备的设备驱动程序引起中断。系统中所有未分配的中断被启用。在这一点上,该设备可以被触发的中断的可编程中断控制器发送出去。Linux和再读取中断状态寄存器的内容,并返回到设备驱动程序。非零的结果,在检测所述一个或多个中断发生。设备驱动程序,然后关闭测试和所有未分配的中断屏蔽。如果ISA设备驱动程序成功地找到该设备的IRQ号,您可以要求像往常一样,设备的控制。基于PCI的系统比更动态的基于ISA的系统。ISA设备使用的中断引脚通常是由硬件设备上的跳线设置,并固定在设备驱动程序。在系统启动和初始化由PCI BIOS的PCI或PCI子系统分配中断的PCI设备。每个PCI设备可以使用A,B,C或D,任何中断。此中断设备建立时确定一个缺省值,通常大多数设备A. PCI插槽PCI中断连接A,B,C和D正确路由到中断控制器的中断。所以PCI插槽,4针A上可以被路由到中断控制器引脚6,PCI插槽7针B路由到中断控制器引脚7等。如何PCI中断路由完全依赖于特定的系统中,一般设置代码来了解PCI中断路由拓扑。基于英特尔处理器的PC,系统BIOS代码没有启动,而这些设置BIOS(如阿尔法AXP)系统由Linux内核来完成这项任务。PCI设置代码为每个设备的PCI配置头到相应的中断控制器的引脚数。通过让一个PCI中断路由拓扑和设备的PCI插槽数量和PCI中断引脚设置代码可确定相应的中断引脚(IRQ)号。设备使用的中断引脚被保存在设备的PCI配置头预留用于这一目的断开域。当你运行时设备驱动程序的信息读出并用来控制从Linux内核的中断请求。系统中,有可能有许多PCI中断源,如在使用PCI-PCI桥。这些中断源数量将超过可能的系统可编程中断控制器引脚数。PCI设备必须共享在这个时候中断号 - 引脚中断控制器可以同时使用多个PCI设备。Linux的中断请求,表示是否可以共享该中断。中断共享会导致中的条目阵列irq_action的,而指向几个irqaction数据结构。在共享一个中断发生时,Linux将调用相应的中断源的中断处理。没有需要服务的中断,任何共享设备驱动程序必须准备调用中断处理的中断(所有PCI设备驱动程序)。7.3中断处理图7.2 Linux的中断处理数据结构的Linux中断处理子系统中断一项基本任务是正确路由到中断处理代码在正确的位置。这些代码必须了解系统中断的拓扑结构。例如,发生在中断控制器软盘控制器的中断引脚6上确实必须识别和路由系统从软盘设备驱动程序的中断处理代码。Linux使用一组指针指向中断服务程序处理系统,包括:呼叫处理。这些例程属于此设备对应的设备驱动程序,它负责为它的请求的中断的每个设备的设备驱动程序进行初始化。图7.2显示的指针一组irq_action irqaction指针。每个数据结构包含的irqaction相应的中断处理相关的信息,包括中断处理程序的地址。处理的中断的数量以及它们是如何依据体系结构,并且将改变系统。Linux是中断处理代码和架构相关。这也意味着,与多个中断源阵列irq_action的大小变化。第一次中断发生时,Linux系统的可编程中断控制器读取中断状态寄存器确定中断源,将其转换为irq_action阵列偏移值。例如从软盘控制器中断中断控制器引脚6将被转换成相应的中断处理数组中的第7个指针。如果此中断是不是就是Linux内核会将错误记录相应的中断处理,否则它会调用相应的中断源为所有irqaction中断处理程序的数据结构。当Linux内核调用设备驱动程序的中断处理过程中断这个过程,必须找出原因和相应的解决方案。为了找到原因中断设备驱动程序,设备驱动程序必须在设备上读取中断状态寄存器。设备可能会报告错误或通知请求已完成。如软盘控制器报告,它已经完成软盘扇区读取头一个正确的定位。一旦你确定了中断的原因,设备驱动程序必须完成更多的工作。如果这是Linux内核将推迟这些操作。为了避免CPU中断模式花费太多时间。在设备驱动程序中断,我们将要详细讨论的。
& 2012 - 2016使用WinDriver编制PCI设备驱动程序的方法_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
使用WinDriver编制PCI设备驱动程序的方法
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢WinDriver中断问题
[问题点数:40分]
WinDriver中断问题
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 pci串口驱动 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信