- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- Gennum-Video_Broadcast-Guide.pdf
- Gel Casting of 316L Stainless Steel Powder Through Mold DIS Proces.pdf
- george golden byron.ppt
- Geological Society, London, Special Publications-1999-Pati駉 Douce-55-75.pdf
- GENESIS2000作业系统.pdf
- Getting started with STM32CubeF4 firmware package for STM32F4xx series.pdf
- Genral Preference and Senior Secondary Schools Literature-in-English Achievement.pdf
- Genotypes with phenotypes Adventures in an RNA toy world.pdf
- GENETIC ALGORITHM FOR CONTROLLERS IN ELEVATOR GROUPS ANALYSIS AND SIMULATION DURING LUNCHPE.pdf
- George_Steiner and Lord Rutherford.ppt
文档评论(0)