发表于《STM32 趟坑一览》
张静茹作者
2年10个月前IP:山东
927754
29楼

关于MDK仿真Fault Report

根据官方给出的进行翻译的,有兴趣的可以点链接看看



故障报告对话框

故障报告对话框显示故障的类型,用于故障的处理程序,相应的故障状态寄存器以及指示故障已发生的寄存器位。


1. 内存管理错误


MM_FAULT_ADDR包含导致内存故障的地址。

MM_FAULT_STAT包含以下内存管理故障状态寄存器设置:

当处理器尝试从不允许执行的位置提取指令时,将设置IACCVIOL。

当处理器尝试在不允许该操作的位置加载或存储时,将设置DACCVIOL。

MMARVALID当MM_FAULT_ADDR持有有效的故障地址设置。

当为异常返回而取消堆栈导致一个或多个访问冲突时,将设置MUNSTKERR。

堆叠例外条目导致一个或多个访问冲突时,将设置MSTKERR。


2. 总线故障


BUS_FAULT_ADDR包含导致总线故障的总线地址。

BUS_FAULT_STAT包含以下总线故障状态寄存器设置:

当处理器在预取指令时检测到指令总线错误并尝试发出有故障的指令时,将设置IBUSERR。

当发生数据总线错误时,将设置PRECISERR,并且为异常返回而堆叠的PC值指向引起故障的指令。

当发生数据总线错误时,将设置IMPRECISERR,但是堆栈帧中的返回地址与导致错误的指令无关。

当为异常返回而取消堆栈导致一个或多个BusFault时,将设置UNSTKERR。

当堆栈的异常条目引起一个或多个BusFault时,将设置STKERR。

BFARVALID当BUS_FAULT_ADDR持有有效的故障地址设置。


3. 使用错误错误

USAGE_FAULT_STAT包含以下使用故障状态寄存器设置:

当处理器尝试执行未定义的指令时,将设置UNDEFINSTR。

当处理器试图执行非法使用EPSR的指令时,将设置INVSTATE。

当处理器由于无效上下文或无效EXC_RETURN值而试图向PC非法加载EXC_RETURN时,将设置INVPC。

当处理器尝试访问协处理器时,将设置NOCP。不支持协处理器。

当处理器进行未对齐的内存访问时,将设置UNALIGNED。

DIVBYZERO当处理器已执行与0除数SDIV或UDIV指令被设定。


4. 硬故障

HARD_FAULT_STAT包含以下硬故障状态寄存器设置:

VECTBL设置为指示在异常处理期间读取的向量表上的 BusFault

强制设置为指示强制HardFault,通过配置优先级的故障无法处理的升级产生的,或者是因为优先或因为它被禁用

DEBUGVT保留供调试使用。


5. 调试错误

DBG_FAULT_STAT包含以下调试故障状态寄存器设置:

当处理器暂停时,将设置为“ HALTED”。

遇到软件断点时设置BKPT。

发生观察点匹配时,将设置DWTTRAP。

触发向量捕捉时,将设置VCATCH。

断言EDBGRQ行时设置EXTERNAL。


评论
文号 / 927754

千古风流
名片专栏发私信
学术分 1
总主题 146 帖总回复 1873 楼拥有证书:进士 学者 机友 笔友
注册于 2010/12/30 03:32:26最后登录 2026/06/20 19:33:53
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的