第7章异常.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章异常剖析

1 第7章 异常 Cortex-M3在内核水平上搭载了一个异常响应系统,支持为数众多的系统异常和外部中断。编号为1-15的对应系统异常,大于等于16的(最多可达240个)则全是外部中断。 中断:请求信号来自CM3内核的外面,来自各种片上外设和外扩的外设,对CM3来说是“异步”的; 异常:因CM3 内核的活动产生的——在执行指令或访问存储器时产生,因此对CM3来说是“同步”的。 2 7.1 异常类型 编号 类型 优先级 简介 0 N/A N/A 没有异常在运行 1 复位 -3(最高) 复位 2 NMI -2 不可屏蔽中断(来自外部 NMI 输入脚) 3 硬(hard)fault -1 所有被除能的 fault,都将“上访”(escalation)成硬 fault。只要 FAULTMASK 没有置位,硬 fault 服务例程就被强制执行。Fault 被除能的原因包括被禁用,或者被 PRIMASK/BASEPRI 被掩蔽。若 FAULTMASK 也置位,则硬 fault 也被除能,此时彻底“关中” 4 MemManage fault 可编程 存储器管理 fault,MPU 访问违例以及访问非法位置均可引发。 企图在“非执行区”取指也会引发此 fault 5 总线 fault 可编程 从总线系统收到了错误响应,原因可以是预取流产(Abort)或数据流产,企图访问协处理器也会引发此 fault 6 用法(usage) 可编程 由于程序错误导致的异常。通常是使用了一条无效指令,或者是   Fault   非法的状态转换,例如尝试切换到 ARM 状态 保留 N/A N/A 11 SVCall 可编程 执行系统服务调用指令(SVC)引发的异常 12 调试监视器 可编程 调试监视器(断点,数据观察点,或者是外部调试请求) 13 保留 N/A N/A 14 PendSV 可编程 为系统设备而设的“可悬挂请求”(pendable request) 15 SysTick 可编程 系统滴答定时器(也就是周期性溢出的时基定时器——译注) 3 7.1 异常类型——内部异常 编号 类型 优先级 简介 16 IRQ #0 可编程 外中断#0 17 IRQ #1 可编程 外中断#1 … … … … 255 IRQ #239 可编程 外中断#239 4 7.1 异常类型 外部中断 除了个别异常的优先级被定死外,其它异常的优先级都是可编程的。 如果一个发生的异常不能被即刻响应,就称它被“悬起”(pending)。异常被悬起的原因,可能是系统当前正在执行一个更高优先级异常的服务例程,或者因相关掩蔽位的设置导致该异常被除能。对于每个异常源,在被悬起的情况下,都会有一个对应的“悬起状态寄存器”保存其异常请求,待到该异常能够响应时,执行其服务例程。 5 7.1 异常类型 优先级的数值越小,则优先级越高。CM3支持中断嵌套,使得高优先级异常会抢占(preempt)低优先级异常。 有3个系统异常:复位,NMI以及硬fault,它们有固定的优先级,并且它们的优先级号是负数,从而高于所有其它异常。 所有其它异常的优先级则都是可编程的,但实际上支持的优先级数会更少,如8级,16级,32级等。 6 7.2 优先级的定义 举例1:如果只使用了3个位来表达优先级,则优先级配置寄存器的结构会如图所示,能够使用8个优先级,分别为:0x00(最高),0x20,0x40,0x60,0x80,0xA0,0xC0以及0xE0。 CM3允许的最少使用位数为3个位,亦即至少要支持8级优先级。 7 7.2 优先级的定义 举例2: 使用3个位表达优先级与 使用4个位表达优先级的 对比图 7.2 优先级的定义 8 抢占优先级与子优先级: 为了使抢占机能变得更可控,CM3还把256级优先级按位分成高低两段,分别称为抢占优先级和子优先级。 抢占优先级决定了抢占行为:当系统正在响应某异常L时,如果来了抢占优先级更高的异常H,则H可以抢占L。 子优先级则处理“内务”:当抢占优先级相同的异常有不止一个悬起时,就最先响应子优先级最高的异常。 7.2 优先级的定义 9 举例:如果只使用3个位来表达优先级([7:5]),并且优先级组的值是5(从比特5处分组),则得到4级抢占优先级,且在每个抢占优先级的内部有2个子优先级。 7.2 优先级的定义 10 子优先级至少是1个位,抢占优先级最多是7个位(最多只有128级抢占的现象)。 在计算抢占优先级和子优先级的有效位数时,必须先求出下列值:芯片实际使用了多少位来表达优先级;优先级组是如何划分的。 如果优先级完全相同的多个异常同时悬

文档评论(0)

586334000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档