Hard Fault的诊断.pdf

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hard Fault的诊断

Hard Fault的诊断 Cortex-M3异常模型 2 异常 编号 IRQ 编号 异常类型 优先级 备注 1 ‐ Reset ‐3,最高 2 ‐14 NMI ‐2 永远被使能 3 ‐13 Hard?Fault ‐1 4 ‐12 MM?Fault 可配置5 ‐11 Bus?Fault 6 ‐10 Usage?Fault 7‐10 ‐ ‐ ‐ 11 ‐5 SVCall 可配置 由SVC指令触发 12 ‐4 DebugMonitor 13 ‐ ‐ ‐ 14 ‐2 PendSV 可配置 15 ‐1 SysTick Fault handlerLocal Fault Hard Fault 常见的四种错误异常 ? 用法错误(Usage Fault) ? 执行未定义指令、非对齐操作、除零 ? 复位时默认未使能 ? 总线错误(Bus Fault) ? 取指令、数据读写、堆栈操作 ? 复位时默认未使能 ? 存储器管理错误(Memory Management Fault) ? 违反MPU设定的存储器访问规则 ? 复位时默认未使能 ? 硬错误(Hard Fault) ? 以上异常处理被关闭,而又发生了异常,则触发 ? 执行异常处理时,发生了异常,则触发 ? 复位时默认使能 3 用法错误异常 ? 用法错误异常是与指令译码相关联的处理机制,通常包括 以下类错误型: ? 企图执行未定义指令 ? 企图进入ARM状态 ? 无效的中断返回码 ? 企图执行协处理器指令 ? 使用多重加载/存储指令时地址没对齐 ? …… ? 使能控制 ? SCB-SHCSR. USGFAULTENA @0xE000ED24 4 9/26/2012Presentation Title 何时会意外地试图切入ARM状态: 执行BX Rn 指令时,Rn 的最低位(LSB)为0 异常向量表中的向量为偶数,LSB = 0 POP {…,PC}时,弹给PC的值为偶数,LSB = 0 用法错误异常寄存器 ? 发生用法错误时,可通过查看寄存器了解出错的原因 ? SCB-CFSR. Usage Fault(UFSR) @0xE000ED2A 5 9/26/2012Presentation Title 位段 名称 类型 含义 备注 9 DIVBYZERO 可 读 、 写1 清 零 企图执行除0操作 (指令:SDIV、UDIV) 使能控制: SCB-CCR.DIV_0_TRP 8 UNALIGNED 企图执行非对齐访问 使能控制:SCB-CCR.UNALIGN_TRP 3 NOCP 企图执行协处理器指令 2 INVPC 无效的异常返回码 1 INVSTATE 试图切换到ARM状态 0 UNDEFINSTR 企图执行未定义指令 总线错误异常 ? 当内核通过AHB接口传送数据时收到了一个错误应答信号 ,则认总线传输错误,进而发起总线错误异常请求;通常 异常来自: ? 取指令时发生错误,通常称为“预取指流产” ? 数据读、写时发生错误,也叫“数据流产” ? 响应中断时,出、入栈发生错误 ? 使能控制 ? SCB-SHCSR. BUSFAULTENA @0xE000ED24 6 9/26/2012Presentation Title AHB总线收到”错误”应答,通常有以下诱因: 企图访问无效的存储器区域,常见于企图访问的地址没有存储器 设备未准备就绪,不能进行总线访问 企图发起的传输宽度不被目标设备所支持 在用户权限下程序企图访问特权模式下的设备 总线错误异常寄存器 ? 发生Bus Fault时,可以查看总线错误状态寄存器了解异常 的大致类型,供异常处理程序分析 ? SCB-CFSR.Bus Fault(BFSR) @0xE000ED29 7 9/26/2012Presentation Title 位段 名称 类型 含义 备注 7 BFARVALID 可 读 、 写1 清 零 =1 表示BFAR有效 BFAR包含引起总 线异常的指令地址 6:5 -- -- 4 STKERR 入栈时发生错误 Stack 3 UNSTKERR 出栈时发生错误 2 IMPRECISERR 不精确的数据总线错误 D-Bus 1 PRECISERR 精确的数据总线错误 0 IBUSERR 指令总线错误 I-Bus 存储器管理错误异常 ? 存储器管理错误异常是由于违规访问存储器空间或由某些 非法访问引发的;通常包括以下类型: ? 访问存储区域时违反了MPU的设置规则 ? 越权访问,访问了没有权限访问的地址; ? 访问了没有存储器的地址 ? 试图从不可执行区域(XN)执行代码 ? 对只读区域进行写操作 ? 使能控制 ? SCB-SHCSR. MEMFAULTENA @0xE000ED24 8 9/26/2012Present

文档评论(0)

l215322 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档