深入解析MPU配置与相关架构特性
1. MPU配置基础
MPU(Memory Protection Unit,内存保护单元)通过位于Cortex - M处理器系统块中的一组内存映射寄存器进行配置。这些寄存器只有在Cortex处理器处于特权模式时才能被访问。
CONTROL寄存器包含三个影响MPU整体操作的有效位:
- PRIVDEFENABLE位:启用背景区域,并授予对整个4GB内存映射的特权访问。
- HFNMIENA位:设置该位后,在硬故障、NMI或FAULTMASK异常期间启用MPU的操作。
- MPU ENABLE位:设置该位可启用MPU的操作,通常在配置MPU时,最后执行此操作。复位后,这些位都被清零。
其余寄存器用于配置八个MPU区域。要配置特定区域(0 - 7),首先将区域编号写入区域编号寄存器来选择该区域,然后通过基地址寄存器和属性与大小寄存器进行配置。基地址寄存器包含一个27位的地址字段、一个有效位和MPU区域编号的重复。
2. 区域配置细节
- 基地址设置 :MPU区域的基地址必须编程到地址字段中,但可用的基地址取决于为该区域定义的大小。区域大小从32字节到4GB,以固定大小范围设置,且基地址必须是区域大小的倍数。编程地址字段可设置所选区域的基地址,在准备激活区域之前无需设置有效位。
- 属性与大小寄存器 :该寄存器用于完成MPU区域的配置。大小字段定义内存保护区域的地址大小(以字节为单位),区域大小计算公式为:
MPU Region memory size = 2 ^
超级会员免费看
订阅专栏 解锁全文
70

被折叠的 条评论
为什么被折叠?



