Day.10 进入 ARM 世界: ARM Cortex-M Exception 介绍

Exception 与 Interrupt

  • Interrupt 是由内部 timer 或 I/O 装置发出的。
  • Exception 是由於程序 Error 或是处於异常状态才会发出。

上图是(Exception Nuber 1~15) ARM Cortex-M 架构的 内部定义的 Exception,16~255 就是 Interrupt 是开发人员要自己定义,在ARM的架构上来说,Interrupt是一种Exception。

  • Reset:
    • Power-on rest
  • NMI: 无法被Mask 的 interrupt
  • Hard fault: 这个故障的功能就是当kernel运行到错误的程序码会导致产生硬体故障,用於指示出程序出现不可修复的异常,需要程序人员关注与处理。
  • MemManage: 在 MPU (记忆体保护单元) 发生的一些记忆体管理的错误
  • Bus fault: 在获取指令、资料读写、获取中断向量检测到访问错误则产生Bus故障。
  • Usage fault: 一些错误程序导致的异常,例如使用一条无效的指令或是非法的状态转换
  • SVC:SVC 参考资料
  • PendSV:如果systick抢占了其他ISRs,不会在其中执行上下文切换。会等到全部的ISRs执行完毕後(期间一定是无任务排程的),才执行pendsv异常,完成上下文的切换。==差别在於生成pendsv异常的时机
  • SYSTICK:系统滴答定时器(SYSTICK)中断 cortex-M3 的SVC、PendSV异常`
  • IRQ: 通常是周边或外部输入产生的

Exception 优先权

每个Exception都有自己的优先权,在ARM Cortex-M中数值越小代表优先权越高,因为IRQ 都是从0开始设定优先权数值,Exception Nuber 1~15 通常在软件会被定义成-14~-1。

在发生Exception时,会直接备份一些暂存器(xPSR,R15,R14,R12,R3,R2,R2,R1,R0),比较特别的是这些备份机制在硬体层就直接做掉了,不需要软件额外来做,return 就把他还原。

Priority Group

在ARM Cortex-M里,设定优先权的register bits被分为两个栏位

  • group priority(靠近MSB这一边)(或称为preempt priority)
    • 如果一个exception handler正在执行,突然一个exception又进来,假设此exception 的 group priority 比你大的话就可以 preempt。
  • subpriority within group(靠近LSB这一边)
    • 如果有多个相同优先权的exception handler在等待执行(Pending),那麽先比较subpriority,比较高的排前面先执行,如果还是一样,Exception Number小的优先。

Excpetion 有 四种状态

  • Pending - 中断信号已经被asserted,即中断已经到来,并且被识别到,这个可以是硬体产生或软件产生的。此时处於等待CPU处理的阶段。
  • Active - 中断已经被CPU确认过,并且当前中断正在被处理。此时同一个中断不会被递交到此状态的CPU。直到此中断不再处於active状态
  • Pending & Active - 中断正在处理,并且新的中断也已经到来。
  • Inactive - 描述中断没有到来的状态,这里的定义是,不是处於active和pending状态。

参考资料

【嵌入式放牛班】Cortex-M Interrupt
浅谈优先权,从ARM Cortex-M到FreeRTOS设定


<<:  认识共享服务+使用SMB

>>:  Day 8:先别急着撰写文章,你听过 Markdown 吗?

[Angular] Day4. Component

讲完前面几张比较偏向原理与不常使用到的章节後,从这章节开始会介绍比较实际运用的东西。 就像在 Day...

Day1.准备好踏入嵌入式的第一步

嵌入式系统其实在我们的生活中无所不在,嵌入式系统是嵌入式计算机系统的简称,也就是说嵌入式系统与普通计...

企业专有资料进行分类的最佳角色- 资料管家(Data Steward)

专有资料和个人资料(或 PII)是资料治理的重要主题。由於个人资料通常对隐私敏感,因此在网络安全上下...

Day 28 -资料库应用小程序 会员新增删除(内涵程序码)

废话不多说直接开始 我们点选注册按钮会连结到这个表单 首先是注册按钮内的程序码 string sql...

远端系列-4:如何下载远端数据库的档案?

角色情境 小明同时学会输入指令操作着终端机、 以及透过滑鼠操作着图像化介面的 Sourcetree ...