ARM MPU内存保护单元
ARM MPU(Memory Protection Unit)是ARM处理器中的一个重要特性,它提供了内存保护和访问控制的功能,通常用于实现操作系统的内存隔离和保护。MPU能够增强系统的健壮性,防止非法访问,保护关键数据区域,防止堆栈溢出、数组越界等错误,确保系统安全。
MPU的工作原理和功能
在ARMv7-M架构下,如Cortex-M3和Cortex-M4处理器,MPU是可选配的。MPU是一个可编程设备,可以定义内存空间的属性,比如特权指令和非特权指令以及缓存是否可访问。通常支持8个区域(region),每个区域代表一段连续的内存区域。MPU的功能由操作系统提供,可以防止用户破坏操作系统数据,隔离任务,保护关键数据区为只读,检测意外访问等。
MPU寄存器模组
MPU主要包含以下寄存器:
-
MPU_TYPER:提供MPU的类型信息。
-
MPU_CTRL:控制MPU的使能和行为。
-
MPU_RNR:选择当前的MPU区域号。
-
MPU_RASR:定义选定区域的大小和访问权限。
MPU配置示例
一个简单的MPU配置示例可能包括设置内存区域的访问权限,如将某些区域设置为非特权状态下不可赋值。如果非特权指针尝试访问这些区域并修改,将触发MemManage fault或hardfault中断。
MPU与Cache的关系
MPU不仅仅起到内存保护的作用,它还与Cache有关,能够加快外接存储设备的访问速度。例如,可以设置所有的RAM为不可执行,避免代码注入攻击。MPU还能定义内存区域的缓存属性,这些属性会传递给系统的Cache单元或内存控制器。
Cortex-M7的MPU注意事项
对于Cortex-M7核心,需要注意TCM(Tightly Coupled Memories)始终被视为不可缓存、不共享的普通内存,无论MPU如何定义。此外,Cortex-M7处理器引入了约束预取(constraint speculative prefetch)的概念,以避免不必要的预取带来的性能损失。
posted on 2025-11-14 09:27 ENGINEER-F 阅读(0) 评论(0) 收藏 举报
浙公网安备 33010602011771号