ARM技术论坛
直播中

jjll652

8年用户 1316经验值
私信 关注
[资料]

一文解析ARM处理器的异常处理模式与处理流程

一、ARM处理器之中断与异常
CPU被中断的方式有指令不对、数据访问有问题、Reset信号等这称为异常,还有中断源:按键、定时器、网路数据等称为中断,中断处于一种异常体系,对于异常,首先需要我们保存现场(也就是保存相关的寄存器),然后调用对应的处理函数,对于中断来说首先还需要分辨中断源再处理对应的处理函数,最后恢复现场
总体过程如下,其中标粗的过程是硬件决定的,后面的过程是软件决定的
初始化:a.设置中断源,让其可以产生中断;b.设置中断控制器(可屏蔽,可设置优先级);c.设置CPU总开关(使能中断)
执行程序
产生中断:如按下按键,中断源经过中断控制器,中断控制器向CPU发出请求,CPU处理中断
CPU每执行完一条指令,都会检查有无异常/中断产生
发生有异常/中断产生,开始处理,对于不同的异常,跳去不同的地址执行程序
这些地址上,只是一条跳转指令,跳去某个函数,对于这些地址是处于连续的,在硬件上存在异常向量表
这些函数,首先会保存现场(各类寄存器),处理异常(中断属于一种异常):分辨中断源,再调用不用的函数,然后恢复现场
对于S3C2440的中断向量表如下
对于u-boot来说,一开始都会指定向量表的跳转指令,其中reset是0地址,undefine_instruction就是地址4,依次增加可以知道irq的地址是24即0x18的地方,当我们发生中断时,CPU跳到这个地址执行该指令,于是CPU就会跳去执行irq的代码:保护现场、首先分辨中断源,调用不同的处理函数、恢复现场
ARM处理器之中断与异常.pdf (1.12 MB)
(下载次数: 1, 2022-5-30 09:47 上传)

原作者:小宝是狗子啊

更多回帖

发帖
×
20
完善资料,
赚取积分