test: PDF洗MD v3 — 截图增强版(12页测试)

This commit is contained in:
2026-06-10 16:57:38 +08:00
parent a0549647dc
commit ff510ea357
40 changed files with 1084 additions and 0 deletions
@@ -0,0 +1,57 @@
# 2.1.6 Usage Fault Status Register (UFSR)
> **寄存器名称**Usage Fault Status Register
> **偏移地址**UFSR(位于 SCB 内)
> **访问权限**:读/写(软件可写入 1 清除对应位)
> **初始复位值**0x0000\_0000
> **说明**UFSR 指示发生了何种 Usage Fault 错误。写 1 到对应位可清除该位。
---
## 位域定义
| 位号 | 位域名称 | 类型 | 复位值 | 描述 |
|:----:|:--------:|:----:|:------:|:------|
| 31:26 | Reserved | — | 0 | 保留位,必须保持清零 |
| 25 | DIVBYZERO | RW | 0 | **Divide by zero usage fault**。当该位被置 1 时,堆栈保存的 PC 值指向执行了 SDIV 或 UDIV 指令且除数为 0 的那条指令。需通过 CCR 的 DIV\_0\_TRP 位使能除零错误捕获。0 = 无除零错误,或未使能捕获;1 = 处理器执行了除数为 0 的 SDIV/UDIV 指令 |
| 24 | UNALIGNED | RW | 0 | **Unaligned access usage fault**。通过 CCR 的 UNALIGN\_TRP 位使能未对齐访问捕获。注意:未对齐的 LDM、STM、LDRD、STRD 指令无论 UNALIGN\_TRP 设置如何均会触发错误。0 = 无未对齐访问错误,或未使能捕获;1 = 处理器执行了未对齐内存访问 |
| 23:20 | Reserved | — | 0 | 保留位,必须保持清零 |
| 19 | NOCP | RW | 0 | **No coprocessor usage fault**。处理器不支持协处理器指令。0 = 未因访问协处理器而触发 usage fault;1 = 处理器尝试访问了协处理器 |
| 18 | INVPC | RW | 0 | **Invalid PC load usage fault**(由无效的 EXC\_RETURN 加载 PC 导致)。当该位置 1 时,堆栈保存的 PC 值指向那条试图非法加载 PC 的指令。0 = 无无效 PC 加载错误;1 = 处理器尝试将非法 EXC\_RETURN 加载到 PC(因无效上下文或无效 EXC\_RETURN 值) |
| 17 | INVSTATE | RW | 0 | **Invalid state usage fault**。当该位置 1 时,堆栈保存的 PC 值指向那条非法使用 EPSR 的指令。若某未定义指令使用了 EPSR,不会置 1。0 = 无无效状态错误;1 = 处理器尝试执行了非法使用 EPSR 的指令 |
| 16 | UNDEFINSTR | RW | 0 | **Undefined instruction usage fault**。当该位置 1 时,堆栈保存的 PC 值指向该未定义指令。未定义指令是指处理器无法解码的指令。0 = 无未定义指令错误;1 = 处理器尝试执行了未定义指令 |
---
## 字段值摘要
| 位域 | = 0 | = 1 |
|:-----|:----|:----|
| **DIVBYZERO** | 无除零 fault,或未使能捕获 | 执行了除数为 0 的 SDIV/UDIV |
| **UNALIGNED** | 无未对齐 fault,或未使能捕获 | 执行了未对齐内存访问 |
| **NOCP** | 未因访问协处理器触发 fault | 尝试访问了协处理器 |
| **INVPC** | 无无效 PC 加载 fault | 尝试非法加载 EXC\_RETURN 到 PC |
| **INVSTATE** | 无无效状态 fault | 尝试执行了 EPSR 非法使用 |
| **UNDEFINSTR** | 无未定义指令 fault | 尝试执行了未定义指令 |
---
## 异常返回与 PC 堆栈值
当 UFSR 中任意位被置 1 时,异常返回时堆栈保存的 PC 值指向**触发该 fault 的那条指令**(用于调试定位)。
---
## 相关寄存器
- **CCR** (Configuration and Control Register):控制 DIV\_0\_TRP 和 UNALIGN\_TRP 位的使能(第 231 页)
- **HFSR** (HardFault Status Register)HardFault 状态寄存器
- **MMFAR** (MemManage Fault Address Register)MemManage 错误地址寄存器
---
## 设计说明
- UFSR 为**粘滞 sticky** 设计:写入 1 清除对应位,写入 0 保持不变
- 所有 Reserved 位写入 1 会产生不可预测行为
- 复位后所有位清零,表示无 Usage Fault