一、實(shí)驗(yàn)平臺(tái)
1、STM32H750
2、軟件:KEIL、CUBEMX
3、參考資料:安富萊_STM32-V7開(kāi)發(fā)板_用戶(hù)手冊(cè),含BSP驅(qū)動(dòng)包設(shè)計(jì)(V3.2)(23.24章節(jié))、Cortex-M3權(quán)威指南(中文)(第十四章 存儲(chǔ)保護(hù)單元MPU)、STM32 MPU說(shuō)明
二、學(xué)習(xí)內(nèi)容:
使用CUBEMX進(jìn)行MPU、Cache配置,并進(jìn)行讀寫(xiě)實(shí)驗(yàn)。
2.1、CUBEMX配置:
1、時(shí)鐘配置
本次設(shè)計(jì)中采用外部25M高速時(shí)鐘,內(nèi)核時(shí)鐘在480MHZ。
2、Cache配置
關(guān)于Icache和dcache的說(shuō)明
首先對(duì)Dcache和icache分別進(jìn)行使能。是能完成之后在配置MPU保護(hù)單元。
MPU保護(hù)單元配置
首先配置MPU的控制模式:背景區(qū)域使用特權(quán)模式訪問(wèn),同時(shí)硬件錯(cuò)誤和NMI,F(xiàn)AULTMASK使能。(2.3、2.4、2.6)
之后對(duì)region進(jìn)行配置,STM32H7共有16個(gè)region等級(jí),這里我們只使用0等級(jí)。
下面是等級(jí)一的配置:
1、設(shè)置region的首地址和地址空間。
2、配置TEX的等級(jí),即cache的模式配置。關(guān)于TEX field配置,一般選擇0就可以(詳見(jiàn)2.5)。
3、配置內(nèi)存的通行許可,配置為特權(quán)寫(xiě),非特權(quán)讀(參考2.7)。
4、配置MPU的指令許可,使能即可。
5、關(guān)于cacheable和bufferable都開(kāi)啟即可(2.8)。
2.2 關(guān)于cache的說(shuō)明:
模式配置:
cache在STM32H7中主要為和MPU內(nèi)存保護(hù)單元配合,同時(shí)cache可以提高sram的讀寫(xiě)速度。在配置時(shí),cache可以被配置為4種模式分別是:
其中在write through模式,為Write through,read allocate,no write allocate,即寫(xiě)操作直接寫(xiě)入sram,讀操作通過(guò)cache;而Write back模式讀寫(xiě)的cache都是開(kāi)啟的,no write allocat和 write allocat的區(qū)別,如果使用no write allocat的情況下,若cache中沒(méi)有相關(guān)區(qū)域則會(huì)直接寫(xiě)入sram,而使用write allocat的話(huà),會(huì)數(shù)據(jù)更新到sram后會(huì)將sram的數(shù)據(jù)再次寫(xiě)入到cache中。
2.3 關(guān)于MPU部分解讀:
2.4 關(guān)于MPU的背景區(qū)域解讀:
關(guān)于背景區(qū)域,即全部的地址,可以被設(shè)置為只可以特權(quán)訪問(wèn)和不能被訪問(wèn)。同時(shí)需要注意,region的訪問(wèn)等級(jí)從高到低排序。使用過(guò)程如下圖所示。
2.5 關(guān)于MPU的TEX配置:
2.6 關(guān)于NMI:
NMI不可屏蔽中斷,不可屏蔽中斷的一般使用方式見(jiàn)下。
2.7 關(guān)于特權(quán)設(shè)置
特權(quán)指的是在MPU的設(shè)置過(guò)程中要設(shè)置region,每個(gè)region都是特權(quán)。