1, MPU属于ARM内核自带的一个外设,是跟核绑定在一起的。
2,MPU原理和作用
MPU简单说其实就是一个内存访问权限控制器,如果CPU在访问内存时不符合MPU定义的访问权限的话,那么访问就会被驳回,并出发一次错误异常,即Hardfault异常。配置内存访问权限的好处主要有:
①避免应用程序破坏其他任务或OS使用的栈和堆
②避免非特权任务访问对系统可靠性和安全性很重要的外设
③防止恶意代码注入攻击
④控制存储器相关访问属性。
3,MPU相关的几个概念
①Memory Map
众所周知,大部分M核目前是32位寻址,那就代表核能访问0-2^32-1地址范围,总共4G大小的内存空间。芯片厂商会根据自己的设计将内部Flash,内部SRAM,TCM,外设寄存器,还有外部存储器等等的访问地址映射分布在这4G中,这称为Memory Map,所以MPU管理的对象就是整个4G空间。
②MPU Region
MPU可以将整个4G分成若干区域,然后对每个区域设置地址空间(起始地址和大小)和不同的访问权限来达到预期的保护目标。一般来说,M3核和M4最大支持8个区域,M7最大支持16个区域,而这个区域就叫做MPU Region
4,MPU保护作用
MPU保护与当前执行的代码“不相关”的所有数据。
“不相关”是指相关内存地址的权限受限制,或程序访问内存地址的范围与其无关,阻止关键数据被破坏,使得嵌入式系统更加健壮与安全。
各OS Application运行在相互保护(不干涉)的内存区域,在某一个分区上运行的代码,无法修改另一个分区的内存。
5,MPU的微控制器有专用的硬件,即内存保护单元(MPU),来支持内存分区。
6,存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射。