Armv8-M架构中的MPU与故障异常处理详解
1. MPU的启用与配置
在完成所有MPU区域的配置并禁用所有未使用的区域后,就可以启用MPU了。CMSIS - CORE的头文件提供了以下函数:
// for current selected MPU
void ARM_MPU_Enable(uint32_t MPU_Control);
在这个函数中, MPU_Control 值的第0位会被设置为1,然后再写入 MPU_CTRL 。当实现了TrustZone时,还有另一个函数允许安全软件启用非安全MPU:
// for MPU_NS
void ARM_MPU_Enable_NS(uint32_t MPU_Control);
这两个函数会执行所需的内存屏障指令(DSB和ISB)。在启用MPU之前,应确保所有与故障异常处理相关的配置(如启用内存管理故障和设置其优先级)都已完成。
1.1 创建RBAR和RLAR值的C宏
| 特性 | 宏 | 值 | 描述 |
|---|---|---|---|
| RBAR | ARM_MPU_RBAR(BASE, SH, RO, NP, XN) | – |
超级会员免费看
订阅专栏 解锁全文
1942

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



