




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于WIN CE与s2410的外部中断的实现曹彤星中断是指在执行程序的过程中,出现了异常情况和特殊请求时,计算机将停止现行程序的运行,转去对这些异常情况或特殊情况进行处理。一、中断的基本知识(一)中断的优点当CPU与外设交换信息时,若用查询的方式,则CPU就要浪费很多时间去等待外设。这样就存在一个快速的CPU与慢速的外设之间的矛盾。为解决这个问题,一方面要提高外设的工作;另一方面发展了中断的概念。1、同步操作有了中断功能,CPU在启动外设工作后,就继续执行主程序,同时外设也在工作,当外设把数据准备好后,发出中断申请,请求CPU中断它的程序,执行输入或输出(中断处理),处理完以后,CPU恢复执行主程序,外设也继续工作。而且有了中断功能,CPU可命令多个外设同时工作。这样大大提高了CPU的利用率,也提高了输入、输出的速度。2、实时控制现场的各个参数、信息,需要的话可在任何时间发出中断申请,要求CPU处理;CPU就可以马上响应(中断要开放)加以处理。这样的及时处理在查询的工作方式下是做不到的。3、 故障处理在出现电源突跳与存储出错等故障时,就可以利用中断系统自行处理,而不必停止运行。(二)中断系统的基本功能控制器中设置中断系统后,便可以处理各种中断。一个完整的中断系统应具备如下的基本功能。1、 实现中断请求实现中断请求,就是要解决如何建立中断源,中断源在什么时候或何种条件下可向CPU发出中断申请。2、 实现排队判优计算机中往往设置有多种中断源,当多个中断源同时向CPU提出中断请求后,CPU应能按轻、重、缓、急予以响应。如何确定响应的优先次序,是中断结构要解决的重要问题之一。3、 实现中断响应当择优选出中断源之后,CPU以何种方式响应中断,如何保护中断时的现场,又在什么时候允许有新的中断请求等,这些问题都是在中断响应时要解决的。4、 实现中断服务程序的连接在CPU响应中断后,如何停止现行程序的执行,并转入中断服务程序的入口地址,中断服务程序的结构情况等,都是要解决的问题。5、 实现中断返回此功能是解决中断处理结束后,CPU如何恢复现场,并正确返回到原程序的断电。6、 实现多重中断当正在执行中断处理的过程中,又出现新的中断请求时如何处理,这就是中断嵌套问题(三)单级中断的处理过程一般有以下几步:中断请求、中断响应、中断处理、中断返回 二、wince下关于中断的主要函数及其说明(一)HookInterrupt:这个函数配置一个带内核的中断服务程序来识别特定的由它的中断请求(IRQ)号来指示的硬件中断。BOOL HookInterrupt(int bwIntNumber,FARPROC pfnHandler);hwIntNumber:硬件中断号,注意它为实际硬件IRQ值而不是逻辑中断标示pfnHandler:来处理特定IRQ中断的指向ISR的指针返回值:1成功 0失败这个函数仅在OEM适应层被OEM调用,OEMInit函数典型用来初始化所有的ISR因为只有一个中断,所以不被ARM使用。头文件:Nkintr.h相链接的库:NK.lib(二)InterruptDisable通过识别中断ID号来禁止硬件中断VOID InterruptDisable(DWORD idInt);参数:idInt in中断的ID评论:设备驱动访问InterruptDisable来禁止硬件中断与撤销通过中断初始化注册的事件。这个驱动必须在关闭事件处理之前调动InterruptDisable。这个内核访问OEMInterruptDisable函数作为这次访问的一部分。头文件:PKfuncs.h链接库:Coredll.lib(三)InterruptDone这个函数示意内核,中断过程已经完成VOID InterruptDone( DWORD idInt );参数:idInt 中断标识符评论:设备驱动调动InterruptDone当它已经完成中断处理过程并准备为下一个中断时。InterruptDone在驱动等待注册事件再被示意之前,必须被访问来-去中断屏蔽。内核通过OEMInterruptDone函数来调用。OS Versions: Windows CE 2.10 and later.头文件:Pkfuncs.h联接库:Coredll.lib(四)InterruptInitialize这个函数与内核一起来初始化硬件中断。初始化允许设备驱动来注册一个事件与启动中断。BOOL InterruptInitialize( DWORD idInt, HANDLE hEvent, LPVOID pvData, DWORD cbData);参数:idInt与中断服务线程相联系的中断标识符hEventEvent to be signaled when the Interrupt is triggeredpvData这个参数能被当作指针来使用cbData这个参数为pbData指向的数据大小(五)InterruptMask这个函数用来屏蔽硬件中断VOID InterruptMask( DWORD idInt, BOOL fDisable); ParametersidInt in Interrupt identifier to be associated with the IST. fDisable in Flag to disable (mask) or enable (unmask) the interrupt. Return ValuesNone.RemarksA device driver calls InterruptMask to temporarily mask or unmask an interrupt so that the device driver can safely access the hardware without being interrupted by the same interrupt.RequirementsOS Versions: Windows CE .NET 4.2 and later.Header: Pkfuncs.h.Link Library: Coredll.lib.(六)INTERRUPTS_ENABLE这个函数用来启动与关闭所有基于自变量的中断并返回当前值This function enables and disables all interrupts based on the argument and returns the current state.BOOL INTERRUPTS_ENABLE( BOOL fEnable);ParametersfEnable in Flag to turn on/off interrupts. Return ValuesThe previous interrupt enable/disable state.RemarksINTERRUPTS_ENABLE is available to OAL routines so that they can perform critical operations without being interrupted. The caller should use the return value to restore interrupt state.For example:fWasEnabled = INTERRUPTS_ENABLE (FALSE); / disable interruptDoCriticalOperations ();INTERRUPTS_ENABLE (fWasEnabled); / restore interrupt stateRequirementsOS Versions: Windows CE .NET 4.0 and later.Header: Nkintr.h.Link Library: Nk.lib.(七)INTERRUPTS_OFF这个函数用来禁止所有中断VOID INTERRUPTS_OFF (void); ParametersNone.Return ValuesNone.RemarksThis function is available to OAL routines so that they can perform critical operations without being interrupted. For example, you can disable interrupts while updating two parts of a device register.RequirementsOS Versions: Windows CE 2.10 and later.Header: Nkintr.h.Link Library: Nk.lib.(八)INTERRUPTS_ON这个函数用来启动所有中断VOID INTERRUPTS_ON (void); ParametersNone.Return ValuesNone.RequirementsOS Versions: Windows CE 2.10 and later.Header: Nkintr.h. Link Library: Nk.lib.(九)UnhookInterrupt这个函数用来取消注册一个特定硬件中断的ISRBOOL UnhookInterrupt( INT hwInterruptNumber, FARPROC pfnHandler );ParametershwInterruptNumber in Hardware interrupt line. Note that this value indicates the actual hardware IRQ value and not the logical interrupt identifier. pfnHandler in Pointer to the ISR that is to handle interrupts for the specified IRQ. Return ValuesTRUE indicates success; FALSE indicates failure.RemarksThis function removes the pfnHandler pointer from the location in a kernel table indicated by hwInterruptNumber and, instead, installs a dummy handler at this location.RequirementsOS Versions: Windows CE 2.10 and later.Header: Nkintr.h.Link Library: Nk.lib.三、s2410下关于外部中断的寄存器与相关知识介绍(一)端口 F 控制寄存器(GPFCON, GPFDAT, and GPFPU)如果GPF0 - GPF7用作断电模式下唤醒信号,端口将设置成中断模式。GPFCON:配置端口F的引脚GPFDAT:端口F的数据寄存器GPFPU:端口F的悬挂寄存器(二)端口G控制寄存器(GPGCON, GPGDAT, AND GPGUP)GPFCON:配置端口G的引脚GPFDAT:端口G的数据寄存器GPFPU:端口G的悬挂寄存器(三)外部中断控制寄存器(EXTINTn)24个外部中断能被多种信号方法请求,常见的方法有电平触发与边沿触发,以及信号极性方法。(四)外部中断过滤寄存器(EINTFLTn)EINTFLTn控制八个外部中断的过滤器的长度(EINT23:16)(五)外部中断屏蔽寄存器(EINTMASK)20个外部中断的中断屏蔽寄存器(EINT23:4)(六)外部中断待处理寄存器(EINTPENDn)20个外部中断(EINT23:4)中断待处理寄存器。四、中断控制器(一) 中断源s3c2410中断控制器支持如下56个中断源:(二)中断优先级产生方框32个中断请求的优先级逻辑由七个轮流仲裁器组成:六个第一层的仲裁器与一个第二层的仲裁器如下图所示:每一个仲裁器能处理六个中断请求基于一位的仲裁器模式控制(ARB_MODE)与两位的选择控制信号(ARB_SEL)如下:ARB_SEL中断优先级顺序00bREQ0, REQ1, REQ2, REQ3, REQ4, and REQ501bREQ0, REQ2, REQ3, REQ4, REQ1, and REQ510bREQ0, REQ3, REQ4, REQ1, REQ2, and REQ511bREQ0, REQ4, REQ1, REQ2, REQ3, and REQ5(二) 中断控制特殊寄存器1、源待处理寄存器(SRCPND)SRCPND寄存器由32位组成,每一位对应一个中断源。如果相应中断源产生中断请求,SRCPND的相应位将置为1,并且等待中断服务。2、中断模式寄存器(INTMOD)该寄存器由32位组成,每一位对应一个中断源。如果一个特殊位置为1,相应中断将在FIQ(fast interrupt)模式运行,否则,将在IRQ模式(普通中断)下运行。3、中断屏蔽寄存器(INTMSK)该寄存器由32位组成,每一位对应一个中断源。如果一个对应位置为1,CPU将不响应屏蔽的中断请求。4、优先级寄存器(优先级)5、中断待处理寄存器(INTPND)中断待处理寄存器32位中的每一位对应相应的中断申请,不能屏蔽并且等待中断服务,拥有最高优先级,它只响应IRQ模式的中断。6、中断补偿寄存器(INTOFFSET) 指示IRQ模式的中断请求源7、子源待处理寄存器(SUBSRCPND)11位8、中断子屏蔽寄存器(INTSUBMSK)五、wince下中断实现过程(一)中断处理流程在了解中断实现过程前,先了解几个wince下中断实现的概念:interrupt service routine(ISR):把物理中断映射为逻辑中断interrupt service thread (IST):设备驱动创建的等待事件的线程OEM adaptation layer (OAL):夹在内核与目标设备硬件中间的层,方便运行系统与目标设备的通讯。下边是中断具体实现过程:1、 如果内核异常跟踪代码接收到硬件中断,内核探测到异常,内核处理硬件中断,否则,进入下一步。2、 内核中断支持处理程序通知ISR禁止该中断,直到完成需要的处理。但其余中断可行。3、 异常处理程序调用ISR来决定如何处理中断。4、 内核接收到ISR的返回值,内核将响应SYSINTR_NOP、SYSINTR_XXX等,内核触发它的中断支持处理程序,因此IST唤醒并开始工作。然后IST创建事件并且等待。5、 当IST唤醒时,IST做它需要做的工作来处理中断,比如往缓冲器挪数据与以一些有意义的方式解释数据。如果需要,IST调用各种I/O程序来访问硬件完成工作。6、 当IST完成它的工作,它通过InterruptDone示意内核完成工作。7、 内核调用OAL函数OEMInterruptDone来完成所有处理中断,OAL示意硬件启动中断。(二)具体实现以s3c24
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医院感染预防措施卫生、防护、隔离、抗菌等知识考试题库附参考答案【综合题】
- 2025年少先队基础知识竞赛题库(含参考答案)
- 2025年足疗行业技师劳动协议示例版B版
- 2025年全国专利代理师资格考试(专利法律知识)复习题及答案
- 2025年考研政治考试题目及答案
- 2025酒店装修合同书样本
- 2025年员工三级安全培训考试题附答案(考试直接用)
- 2025年电子信息工程课程考试试卷及答案
- 高考地理文科真题及答案
- 2025年无人机资格证考试题库及参考答案详解
- 餐饮库房管理流程
- 市政工程监理大纲投标方案(技术方案)
- 技术经纪人(初级)考试试题(附答案)
- 幕墙UHPC施工专项方案 (评审版)
- 苏东坡人物介绍下载
- 2025届高三二轮复习+生态脆弱区的综合治理
- 《电力储能运行人员培训规范》
- 轻钢屋面工程施工方案
- DB3702T 31-2023 未成年人家庭监护能力评估工作规范
- 2024-2025年历年成人高考民法真题及复习资料
- 幼儿园课程教研活动
评论
0/150
提交评论