ARM_Cortex-M3内核结构(14)

发布时间:2021-06-07

表 2.9 向量偏移量寄存器(0xE000ED08)

向量表中至少需要有 4 个值:栈顶地址;复位程序的位置;NMI 异常的位置;硬故障的异常的位置。

当中断使能时,不管向量表的位置在哪,它指向所有使能屏蔽的异常。并且如果使用 SVC 指令,还 需要指定 SVCCall ISR 的位置。

2.5.4 异常的进入与退出

1.异常进入

入栈:当处理器发生异常时,首先自动把 8 个寄存器(xPSR、PC、LR、R12、R3、R2、R1、R0)压 入栈,处理器自动完成,在自动入栈的过程中,把寄存器写入栈的时间顺序,并不是写入空间相对应的, 但机器会保证正确的寄存器被保存到正确的位置,如图 2.10 所示,假设入栈,栈地址为 N。

地址

数据

时间

2.10 内部入栈示意图

取向量:发生异常,紧接着内核将根据向量表找出正确的异常向量,然后在服务程序的入口处预取 指,处理器将取指与取数据分别能过总线控制,使入栈与取指这两项工作能同时进行,以便快速进入中 断。

更新寄存器:入栈和取向量操作完成之后,在执行服务程序之前,还必须更新一系列寄存器。 SP:在入栈后会把堆栈指针(PSP或MSP)更新到新的位置。在执行服务例程时,将由MSP负责对堆 栈的访问。

PSR:更新IPSR位段(地处PSR的最低部分)的值为新响应的异常编号。 PC:在取向量完成后,PC将指向服务例程的入口地址, LR:在出入ISR的时候,LR的值将得到重新的诠释,这种特殊的值称为“EXC_RETURN”,在异常进 入时由系统计算并赋给LR,并在异常返回时使用它。 以上是在响应异常时通用寄存器及特殊功能寄

存器的变化。另外在NVIC中,也会更新若干个相关寄 存器。

ARM_Cortex-M3内核结构(14).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219