一、實驗平臺
1、STM32H750
2、軟件:KEIL、CUBEMX
3、參考資料:安富萊_STM32-V7開發(fā)板_用戶手冊,含BSP驅動包設計(V3.2)(23.24章節(jié))、Cortex-M3權威指南(中文)(第十四章 存儲保護單元MPU)、STM32 MPU說明
二、學習內容:
使用CUBEMX進行MPU、Cache配置,并進行讀寫實驗。
2.1、CUBEMX配置:
1、時鐘配置
本次設計中采用外部25M高速時鐘,內核時鐘在480MHZ。
2、Cache配置
關于Icache和dcache的說明
首先對Dcache和icache分別進行使能。是能完成之后在配置MPU保護單元。
MPU保護單元配置
首先配置MPU的控制模式:背景區(qū)域使用特權模式訪問,同時硬件錯誤和NMI,F(xiàn)AULTMASK使能。(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的區(qū)別,如果使用no write allocat的情況下,若cache中沒有相關區(qū)域則會直接寫入sram,而使用write allocat的話,會數(shù)據(jù)更新到sram后會將sram的數(shù)據(jù)再次寫入到cache中。
2.3 關于MPU部分解讀:
2.4 關于MPU的背景區(qū)域解讀:
關于背景區(qū)域,即全部的地址,可以被設置為只可以特權訪問和不能被訪問。同時需要注意,region的訪問等級從高到低排序。使用過程如下圖所示。
2.5 關于MPU的TEX配置:
2.6 關于NMI:
NMI不可屏蔽中斷,不可屏蔽中斷的一般使用方式見下。
2.7 關于特權設置
特權指的是在MPU的設置過程中要設置region,每個region都是特權。