【ARMv8M Cortex-M33 系列 7.1 -- xPSR | CFSR | HFSR | BFAR | MMFAR 寄存器】

请阅读【嵌入式开发学习必备专栏 之 ARM Cortex-Mx专栏】


文章目录

问题背景

由于在RA4M2(Cortex-M33)移植RT-Thread OS的时候遇到了 Hardfault,不知道如何分析错误原因,后参考以前写的文章【ARM Cortex-M 系列 2.1 -- RT-Thread Cortex-M7 异常处理及 hardfault 处理分析】 来查找原因。

Cortex-M33 Fault 寄存器介绍

在 ARM Cortex-M33 微控制器上,当发生异常或错误时,一些特殊的寄存器提供了用于调试和错误处理的关键信息。这些寄存器包括程序状态寄存器 (xPSR )、可配置故障状态寄存器 (CFSR )、硬件故障状态寄存器 (HFSR )、总线故障地址寄存器 (BFAR ) 和内存管理故障地址寄存器 (MMFAR ) 以及 UFSR(UsageFault Status Register)。

xPSR (程序状态寄存器)

xPSR 寄存器包含多个状态字段,包括程序状态、中断或异常返回状态以及其他系统状态。

其中最重要的字段是:

  • APSR (应用程序状态子字段): 包括 Negative, Zero, Carry, Overflow 和 Saturation 状态标志。
  • IPSR (中断程序状态子字段): 表示当前激活的异常编号。
  • EPSR (执行程序状态子字段): 包括 Thumb状态位,它应始终被设置为1,因为 Cortex-M33 只能执行 Thumb 指令集。

CFSR (可配置故障状态寄存器)

32-bit read/write-one-to-clear register located at 0xE000ED28.

CFSR 寄存器用于提供有关内存管理、总线和使用错误的详细信息。它分为三个部分:

  • MFSR (内存管理故障状态寄存器子字段): 提供内存管理故障信息,例如违反内存保护单元 (MPU) 规则。
  • BFSR (总线故障状态寄存器子字段): 提供总线访问故障信息,如非法地址访问或总线错误。
  • UFSR (使用错误状态寄存器子字段) : 提供特定错误的信息,例如非法指令、未对齐的访问或除零操作。
    Secure software can access the Non-secure version of this register via UFSR_NS located at 0xE002ED2A.
    The location 0xE002ED2A is RES0 to software executing in Non-secure state and the debugger.

HFSR (硬件故障状态寄存器)

HFSR 寄存器提供有关所有硬件故障的信息。它包括字段,如调试事件或向量表硬故障。

BFAR (总线故障地址寄存器)

BFSRBFARVALID 位被设置时,BFAR 寄存器包含了导致总线故障的地址。

MMFAR (内存管理故障地址寄存器)

MMFSRMMARVALID 位被设置时,MMFAR 寄存器包含了导致内存管理故障的地址。

相关推荐
江哥工作室1 小时前
几分钱的 LM358 采集心电
单片机·lm358·心电·小信号
z20348315201 小时前
CLion开发STM32——文件管理
stm32·单片机·嵌入式硬件·clion
weixin_452077642 小时前
STM32 烧录程序后上电不工作问题集合
stm32·单片机·嵌入式硬件
LCG元3 小时前
STM32多传感器数据采集系统设计:I2C+ADC+UART+低功耗工程实战
stm32·单片机·嵌入式硬件
国科安芯3 小时前
MCU芯片AS32X601如何使用 DMA 单次模式搬运 ADC 多通道采样数据?
单片机·嵌入式硬件
LCG元5 小时前
STM32 RS485 Modbus RTU通信系统设计:从协议解析到工程实战
stm32·单片机·嵌入式硬件
qasxc785636 小时前
杰理蓝牙串口打印调试
单片机·嵌入式硬件
sramdram19 小时前
MCU微控制器OA打印机方案
单片机·嵌入式硬件·mcu·mcu微控制器
科芯创展1 天前
3.5A,60VIN,异步降压芯片,XZ1815
单片机·嵌入式硬件
Kuakewei8881 天前
PW2609A在2.6A负载下压差0.14V,温升较3A工况低11°C
单片机·嵌入式硬件