打印

如何处理ARM的异常和中断

[复制链接]
255|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
roucun|  楼主 | 2018-8-30 16:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
异常和中断处理,负责处理错误,中断和其他由外部系统触发的事件。

       ARM有7种异常,数据中止、快速中断请求、预取址中止、软件中断、复位及未定义指令。

      2种类型的中断,第一类是由外部引起的,即IRQ和FIQ。第二类是一条引发中断的特殊指令SWI。两种中断都会挂起正常的程序执行。

     异常是需要中止指令正常执行的任何情形,包括ARM内核产生复位,取指或存储器访问失败,遇到未定义指令,执行了软件中断指令,或者出现了个外部中断等。异常处理就是处理这些异常情况的方法。大多数异常都对应一个软件的异常处理程序,一个在异常发生执行的软件程序。

      每个异常都导致内核进入一种特定的模式。没个处理器模式都有一组各自的分组寄存器,处理器模式决定了哪些积存器是活动的以及对cpsr的完全读/写访问。同时,通过编程改变cpsr,可以进入任何ARM处理器模式。拥护和系统模式,不通过异常进入,只能修改cpsr。


      异常和其模式
异常                                           模式                   目的
快速中断请求                             FIQ                 快速中断请求处理
中断请求                                    IRQ                 中断请求处理
SWI和复位                                 SVC                 操作系统的受保护模式
预取指中止和数据中止               abort              虚存和存储器保护处理
未定义指令                                undefined       软件模拟硬件协处理器

      中断是由ARM外设引起的一种特殊的异常。IRQ异常用于通常的操作系统事物处理。FIQ异常一般是为单独的中断源保留的。IRQ可以被FIQ所中断,但IRQ不能中断FIQ。为了使DIQ更快,所以这种模式有更多的影子寄存器。FIQ不能调用SWI(软件中断)。FIQ还必须禁用中断。

      每个外围设备都有一条中断线连接到向量中断控制器。外设功能的中断源,一般有WDT、定时器、UART、I2C、SPI‘RTC、A/D等等。可以通过寄存器设置这些中断的优先极。

       IC资料:MUR1100EG  545A   K-XC164CM-8F40F AA   X1294BCEI   C16C711-20E/SO

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

421

主题

446

帖子

0

粉丝