ThreadX学习(一)--MPU内存保护单元与Cache配置

一、实验平台

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都是特权。

2.8 关于缓冲配置

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 3
收藏 2
关注 9
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧