Day12.进入 ARM 世界: ARM Cortex-M Exception Behavior

Nested Interrupts

Cortex-M3 和 NVIC 在硬体架构上支援(Nested Interrupt)巢状中断。

  • 当处理器正在处理一个Exception时,所有其他具有相同或更低priority 的 Exception 都会被 blocked。
  • 自动的stacking and unstacking,让我们在巢状中断不会丢失原本registers的内容,但是我们还是要注意当巢状中断不断加深可能会导致系统崩坏
  • 相同 Exception 是不能被 Reentrant 的,这可能会导致中断延迟。

因此我们并不需要额外写组合语言来支援,我们只需设定好每个 Exception 的 priority。

Tail chaining

低优先权的pending excptions,无需重复例外的前置作业,以串接的方式等候服务。

Late Arrival

高优先权的excptions ,只要能在前者转换成active前抵达,就不需要以强占的方是登场,此机制可以加速、并减少堆叠的使用。至於被插队的低全中断,NVIC将以Tail-chainging视之。

Exception Exit

当 exception handler 结束时,需要 Exception Exit (中断返回)来恢复系统状态,透过link register ($lr) 设置为 EXE_RETURN之值,该值告诉 ARM 转回被 Exception 前的状态。

这张图很清楚的说明exception return做了甚麽事。

参考资料

Definitive Guide To the ARM Cortex-M3
手机里的 ARM 处理器: 隐藏的精灵 Cortex-M


<<:  Day25 切版笔记 - 导览列

>>:  DAY10 - 切换不同的布景主题

我的 QA 道路之你怎麽又被炒了

嗨各位~ 今天是今年的最後一天, 这篇想来分享一下我自身QA的经历, 我知道你们想看的是到底为甚麽会...

【从零开始的 C 语言笔记】第二篇-大家的开始 - Hello World & 档案创建介绍

不怎麽重要的前言 上一篇我们成功的安装好一个程序码编辑器了,接下来我们要来学习怎麽使用它了! 写程序...

Day 24 cypress取得mock的回传资料

今天我们来针对API call来进行模拟,因为测试画面不一定都只是点选之类的模拟测试,这时候我们可能...

D3. 学习基础C、C++语言

D3: 资料型态指定格式 %c:以字元输出 %d:以10进位整数输出 %o:以8进位整数输出 %u:...

Unity与Photon的新手相遇旅途 | Day11-敌人攻击

今天的内容为该如何简单制作出一个自动攻击的敌人 ...