MPU 是一个可以编程的 device 设备,可以用来定义内存空间的属性,比如特权指令和非特权指令以及 cache 是否可访问,armv7-m 通常支持 8 个 region,一个 region 就代表一段连续的区域。MPU 可以让嵌入式系统更加健壮,以及保护一些加密区域,MPU 有以下能力可以增加系统的健壮性:
- 可以阻止用户去破坏操作系统需要使用的数据
- 可以防止一个任务去非法访问其他任务的数据,将任务完全隔离开
- 可以把关键数据区设为只读,从而不被破坏
- 检测其他意外访问,比如,堆栈溢出,数组越界等
- 避免应用任务破坏其他任务或者 OS 内核使用的栈或数据存储器
- 避免非特权任务访问对系统可靠性和安全性很重要的外设
- 将 SRAM 或者 RAM 定义为不可执行(永不执行,XN),可以防止代码注入攻击