一、实验平台
1、STM32H750
2、软件:KEIL、CUBEMX
3、参考资料:安富莱_STM32-V7开发板_用户手册,含BSP驱动包设计(V3.2)(23.24章节)、Cortex-M3权威指南(中文)(第十四章 存储保护单元MPU)、STM32 MPU说明
二、学习内容:
使用CUBEMX进行MPU、Cache配置,并进行读写实验。
2.1、CUBEMX配置:
1、时钟配置
本次设计中采用外部25M高速时钟,内核时钟在480MHZ。
2、Cache配置
关于Icache和dcache的说明
首先对Dcache和icache分别进行使能。是能完成之后在配置MPU保护单元。
MPU保护单元配置
首先配置MPU的控制模式:背景区域使用特权模式访问,同时硬件错误和NMI,FAULTMASK使能。(2.3、2.4、2.6)
之后对region进行配置,STM32H7共有16个region等级,这里我们只使用0等级。
下面是等级一的配置:
1、设置region的首地址和地址空间。
2、配置TEX的等级,即cache的模式配置。关于TEX field配置,一般选择0就可以(详见2.5)。
3、配置内存的通行许可,配置为特权写,非特权读(参考2.7)。
4、配置MPU的指令许可,使能即可。
5、关于cacheable和bufferable都开启即可(2.8)。
2.2 关于cache的说明:
模式配置:
cache在STM32H7中主要为和MPU内存保护单元配合,同时cache可以提高sram的读写速度。在配置时,cache可以被配置为4种模式分别是:
其中在write through模式,为Write through,read allocate,no write allocate,即写操作直接写入sram,读操作通过cache;而Write back模式读写的cache都是开启的,no write allocat和 write allocat的区别,如果使用no write allocat的情况下,若cache中没有相关区域则会直接写入sram,而使用write allocat的话,会数据更新到sram后会将sram的数据再次写入到cache中。
2.3 关于MPU部分解读:
2.4 关于MPU的背景区域解读:
关于背景区域,即全部的地址,可以被设置为只可以特权访问和不能被访问。同时需要注意,region的访问等级从高到低排序。使用过程如下图所示。
2.5 关于MPU的TEX配置:
2.6 关于NMI:
NMI不可屏蔽中断,不可屏蔽中断的一般使用方式见下。
2.7 关于特权设置
特权指的是在MPU的设置过程中要设置region,每个region都是特权。