文章目录
- 1. MPU - 内存保护单元
1. MPU - 内存保护单元
-
MPU:(Memory Protection Unit,内存保护单元),早在 STM32F1 和 F4 芯片上面也是有这个功能的,但是基本用不上。但是到了 H7 就得用上了,因为要设置 Cache;
-
MPU的作用: 将 memory map(内存映射)区分为多个具有一定访问规则的区域,通过这些规则可以实现如下功能(简单说就是把内存映射保护起来,访问它们则需要符合一定规则和权限):
- 防止不受信任的应用程序访问受保护的内存区域;
- 防止用户应用程序破坏操作系统使用的数据;
- 通过阻止任务访问其它任务的数据区;
- 允许将内存区域定义为只读,以便保护重要数据;
- 检测意外的内存访问;
-
内存映射:在STM32H7内32 位 CM7 内核整体可以寻址的
0 到 2^32 -1
共计 4GB 的寻址空间。通过这些地址可以访问 RAM、Flash、外设等。下图是内存映射的轮廓图,IC 厂家使用时,再做细分,添加相应的硬件功能;
-
MPU 与Chache:MPU 可以独立配置保护 16 个内存区域,每个区域最小要求 256 字节,每个区域还可以配置为 8 个子区域;由于子区域一般都大小相同,这样每个子区域的大小就是 32 字节,正好跟 Cache 的 Cache Line 大小一样;
-
16个内存区的优先级:MPU 可以配置的 16 个内存区的序号范围是 0 到 15,还有默认区 default region,也叫作背景区,序号-1;由于这些内存区可以嵌套和重叠,所以这些区域在嵌套或者重叠时有个优先级的问题。序号15 的优先级最高,以此递减,序号-1,即背景区的优先级最低。这些优先级是固定的;