欢迎来到天天文库
浏览记录
ID:43805185
大小:1.00 MB
页数:91页
时间:2019-10-14
《第8章 ARM系统中的中断系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第8章ARM系统中的中断系统8.1ARM系统中断系统概述8.2ARM系统中断控制器8.3ARM系统中断源8.4ARM系统中断模式8.5ARM系统中断控制器的寄存器控制8.6ARM系统中断应用编程8.7习题8.1ARM系统中断系统概述当正常的程序执行过程中发生暂时的停止的,称为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。中断与堆栈设置和ARM体系结构紧密相关,ARM是一种支持多任务操作的系统内核,内部的结构完全适应多任务应用。当异常中断发生
2、时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执行。在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。8.1.1引起异常的原因1.指令执行引起的异常软件中断、未定义指令(包括所要求的协处理器不存在,但它是协处理器指令)、预取址中止(存储器故障)、数据中止。2.外部产生的中断复位、FIQ、IRQ。8.1.2ARM中异常中断的种类1.复位(RESET)(1)当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行,
3、包括系统加电和系统复位。(2)通过设置PC跳转到复位中断向量处执行称为软复位。2.未定义的指令当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。3.软件中断这是一个由用户定义的中断指令(SWI)。可用于用户模式下的程序调用特权操作指令。在实时操作系统中可以通过该机制实现系统功能调用。4.指令预取终止(PrefetchAbort)如果处理器预取指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。5.数据访问终止(DataAbort)如果数据访问指令的目标
4、地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断。6.外部中断请求(IRQ)当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。系统中各外设通过该异常中断请求处理服务。7.快速中断请求(FIQ)当处理器的外部快速中断请求引脚有效,而且CPSR的F控制位被清除时,处理器产生外部中断请求异常中断。8.1.3异常的响应过程除了复位异常外,当异常发生时,ARM处理器尽可能完成当前指令(除了复位异常)后,再去处理异常。并执行如下动作:1.将引起异常指令的下一条指令的地址保存到新模式的R14中,若异常是从ARM
5、状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。例如:在软件中断异常SWI,指令MOVPC,R14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。2.将CPSR的内容保存到要执行异常中断模式的SPSR中。3.设置CPSR相应的位进入相应的中断模式。4.通过设置CPSR的第7位来禁止IRQ。如果异常为快速中断和复位。则还要设置CPSR的第6位来禁止快速中断。5.给PC强制赋向
6、量地址值。ARM处理器内核会自动执行以上几步,程序计数器PC总是跳转到相应的固定地址。如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态,则异常处理返回时,自动切换到Thumb状态。8.1.4异常中断处理返回异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:1.将所有修改过的用户寄存器从处理程序的保护栈中恢复。2.将SPSR复制回CPSR中,将连接寄存器LR的值减去相应的偏移量后送到PC中。3.若在进入异常处理时设置了中断禁止位,要在此清除。复位异常处理程序不需要返回。8.1.5ARM系统中的中断向量表当一个异常或
7、中断发生时,处理器会把PC设置为一个特定的存储器地址。这一地址放在一个被称为向量表(vectortable)的特定地址范围内。向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。存储器映射地址0x00000000是为向量表保留的。在有些处理器中,向量表可以选择定位在存储空间的更高地址(从偏移量0xffff0000开始)。当一个异常或中断发生时,处理器挂起正常的执行转而从向量表装载指令。每一个向量表入口包含一条指向一个特定子程序的跳转指令。同时需要注意的是:1.中断向量表指定了各异常中断及其处理程序的对
此文档下载收益归作者所有