前言
RH850U2A芯片是瑞薩公司針對電控類域控制器而發(fā)布的一塊最新MCU芯片,功能及其強(qiáng)大。本系列文章講詳細(xì)介紹RH850U2A相關(guān)的功能,本文為RH850U2A-MPU功能詳解。
正文
1.MPU功能簡述
MPU保護(hù)與當(dāng)前執(zhí)行的代碼“不相關(guān)“的所有數(shù)據(jù)?!安幌嚓P(guān)”是相關(guān)內(nèi)存地址的權(quán)限受限制,或者是程序訪問內(nèi)存地址的范圍于其無關(guān),阻止關(guān)鍵數(shù)據(jù)被破壞,使嵌入式系統(tǒng)更加健壯與安全。
MPU作用主要有兩個方面:為兩個保護(hù),一個檢測。
1)MPU的保護(hù)作用
指訪問區(qū)域的保護(hù)和讀寫區(qū)域的保護(hù)。
① 訪問區(qū)域的保護(hù)。
可以將內(nèi)存區(qū)域劃為特權(quán)區(qū)域和普通區(qū)域,特權(quán)區(qū)域只有特權(quán)用戶才能訪問,普通用戶被禁止訪問,以此來保護(hù)特定的數(shù)據(jù)。
常見的應(yīng)用場景:
1> 對帶系統(tǒng)的來說,可以設(shè)置數(shù)據(jù),以防止用戶應(yīng)用程序破壞操作系統(tǒng)使用過程中的數(shù)據(jù)。
2> 隔離任務(wù),以防止一個任務(wù)訪問其他任務(wù)的數(shù)據(jù)。
3> 將SRAM或者RAM空間定義為不可執(zhí)行,防止代碼注入。
② 讀寫區(qū)域的保護(hù)。
設(shè)置指定的區(qū)域為只讀,可以有效的防止比較關(guān)鍵的數(shù)據(jù)被錯誤修改。
2)MPU的檢測功能
指可以檢測堆和棧的溢出情況及數(shù)組有沒有越界。
功能安全中對內(nèi)存分區(qū)MPU的相關(guān)描述:汽車ECU軟件是高度模塊化的嵌入式軟件,其功能實現(xiàn)是可以為非功能安全,和功能安全的SWC組合,它們分別擁有不同的ASIL安全等級。
根據(jù)ISO26262,如果嵌入式軟件包含不同ASIL等級的SWC,要么整個軟件工程都需要基于最高安全等級的要求進(jìn)行開發(fā),需要保證擁有更高安全等級的SWC的操作不會受到其他SWC的干擾,也即需要做到FFI(Freedom from interference)的設(shè)計。
基于更低安全等級要求開發(fā)的SWC,可能會出現(xiàn)錯誤地訪問到更高安全等級SWC的內(nèi)存區(qū)域,產(chǎn)生干擾。
為此,SWC需要運(yùn)行在不同的內(nèi)存區(qū)域,或者不同的內(nèi)存分區(qū),來防止類似的內(nèi)存訪問違例。
ISO26262中,以下內(nèi)存相關(guān)的故障影響被視為SWC之間產(chǎn)生干擾的原因:
-內(nèi)容損壞
-讀寫區(qū)域?qū)儆诹硪粋€SWC
-數(shù)據(jù)不一致
-棧溢出或棧下溢
要滿足上述定義,是MPU內(nèi)存保護(hù)的目標(biāo), 也可以通過限制對于內(nèi)存以及內(nèi)存對應(yīng)的硬件的訪問。
這里的內(nèi)存分區(qū)意味著:
各OS Application運(yùn)行在相互保護(hù)(不干涉)的內(nèi)存區(qū)域 ,在某一個分區(qū)上運(yùn)行的代碼,無法修改另一個分區(qū)的內(nèi)存。
內(nèi)存分區(qū)也可以保護(hù)只讀內(nèi)存段(例如代碼執(zhí)行)以及內(nèi)存對應(yīng)的硬件。
內(nèi)存分區(qū)和用戶/特權(quán)模式可以保證SWC之前互不干擾——即使某一個SWC出現(xiàn)了內(nèi)存相關(guān)的故障,也不會對其他軟件模塊有影響。
如果一個SWC運(yùn)行在用戶模式,那么它對CPU資源/指令的訪問也是受限制的。
MPU的微控制器有專用的硬件:即內(nèi)存保護(hù)單元(MPU),來支持內(nèi)存分區(qū)。
2.RH850內(nèi)存保護(hù)單元架構(gòu)
RH850U2A芯片具有內(nèi)存保護(hù)/保護(hù)功能,防止對內(nèi)存數(shù)據(jù)的錯誤訪問,并控制外圍模塊的寄存器。下圖1顯示了內(nèi)存保護(hù)的整體架構(gòu)。每個可編程核心(總線主機(jī))都有一個內(nèi)存保護(hù)單元(MPU),它定義了軟件訪問保護(hù)。此外,每個資源(總線從設(shè)備)都有一個守衛(wèi)來控制任何總線主設(shè)備的訪問,包括那些沒有MPU的,比如DMA。
3.使用RH850U2A的MPU
3.1RH850U2A的MPU配置過程
1)第一步,配置MPIDn寄存器。在使能了MPU功能后,哪些硬件模塊還可以訪問所有的內(nèi)存保護(hù)區(qū)域。
2)第二步,配置MPIDX寄存器。配置每一個內(nèi)存保護(hù)塊的時候,需要先配置MPIDX寄存器直沒entry ID。
3)第三步,配置MPLA寄存器。配置每一個內(nèi)存保護(hù)塊的Minimum地址。
4)第四步,配置MPUA寄存器。配置每一個內(nèi)存保護(hù)塊的Maximum地址。
5)第五步,配置MPAT寄存器。配置每一個內(nèi)存保護(hù)塊的USER/SVP模式下的可讀、可寫、可執(zhí)行的屬性。
6)第6步,配置MPM寄存器。使能MPU功能。
3.2 RH850U2A-MPU相關(guān)寄存器配置使用的指令
使用 void __LDSR(int regID, int selID, unsigned int val);
Note: 什么是寄存器的regID和sellD? -- __LDSR()函數(shù)接受一個32位整數(shù)參數(shù)(作為它的最后一個參數(shù)),并將其存儲到系統(tǒng)寄存器中,與它的第一個參數(shù)指定的數(shù)字相對應(yīng),該參數(shù)必須立即是一個常量。在RH850和以后的處理器上,它還需要另一個參數(shù),該參數(shù)指定寄存器組號,它必須立即是一個常量。簡單來講regID就是寄存器ID,sellD就是寄存器所在的組ID。
3.3 配置MPID寄存器
MPID寄存器配置哪一些模塊可以直接訪問內(nèi)存保護(hù)區(qū)域。
下表記錄了有哪些SPID可以配置為直接訪問內(nèi)存保護(hù)區(qū)域。
示例:__LDRS(24, 5, 0)//CPU0可以訪問保護(hù)區(qū)域
3.4配置MPIDX寄存器
每一個內(nèi)存保護(hù)塊都有一個IDX(最多32個,0-31),在配置每一個內(nèi)存保護(hù)塊的訪問屬性的時候,首先要配置MPIDX寄存器。
示例:__LDRS(16,5,0);//通過MPIDX寄存器配置第一個entry的IDX。
3.5配置MPLA寄存器
MPLA配置當(dāng)前內(nèi)存保護(hù)塊(MPIDX == 0-31)的起始地址(Minimum Address)。
示例:__LDRX(20,5, 0x00007F00);
3.6配置MPUA寄存器
MPLA配置當(dāng)前內(nèi)存保護(hù)塊(MPIDX == 0-31)結(jié)束地址(Maximum Address)。
示例:__LDRS(20,5,0x00017FFC);
3.7 配置MPAT寄存器
MPAT寄存器配置每一個內(nèi)存保護(hù)塊的訪問屬性(user模式下的可讀UR、可寫UW、可執(zhí)行UX; supervisor模式下的可讀SR、可寫SW、可執(zhí)行SX)。
3.8 配置MPM寄存器
使能(Enable)MPU功能。
4.內(nèi)存保護(hù)單元MPU異常提示信息
4.1 MDP/MIP Exception
產(chǎn)生內(nèi)存保護(hù)后會產(chǎn)生MIP/MDP Exception(異常中斷地址偏移,0x90,如果我們設(shè)置EBASE為0x00080000,那么異常中斷的絕對地址就是0x00080090)。
在MIP/MDP Exception的異常中斷處理函數(shù)匯總一般會條用_Os_Abort觸發(fā)OS調(diào)用ShutdownHook函數(shù),在這個函數(shù)里面我們可以做一些故障信息保存動作。
4.2 MEA和MEI寄存器
產(chǎn)生了MIP/MDP異常之后,MEA寄存器會存儲異常地址,MEI寄存器會存儲異常指令。
5.總結(jié)
本文介紹了MPU的基本原理,以及結(jié)合RH850U2A芯片詳細(xì)介紹了MPU的配置使用過程,同時介紹了MPU保護(hù)功能產(chǎn)生后如何去識別異常信息。MPU在實際項目功能中非常的有用,如果使能了MPU,同時能通過有效的方法記錄MPU異常中斷時的MEI/MEA寄存器的信息,那么在發(fā)生了異常復(fù)位后就能通過歷史信息來定位復(fù)位的SWC(實際項目中不可能一直都有仿真的機(jī)會,所以這個功能非常的重要)。
Note: MPU的配置及使能一般都是在EcuM_Init之前完成。
審核編輯:劉清
-
控制器
+關(guān)注
關(guān)注
112文章
16090瀏覽量
177014 -
寄存器
+關(guān)注
關(guān)注
31文章
5290瀏覽量
119786 -
MPU6050
+關(guān)注
關(guān)注
39文章
307瀏覽量
71070 -
MCU芯片
+關(guān)注
關(guān)注
3文章
246瀏覽量
11348
原文標(biāo)題:MPU功能詳解-以RH850U2A為例
文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論