前言
RH850U2A芯片是瑞薩公司針對(duì)電控類域控制器而發(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作用主要有兩個(gè)方面:為兩個(gè)保護(hù),一個(gè)檢測。
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> 對(duì)帶系統(tǒng)的來說,可以設(shè)置數(shù)據(jù),以防止用戶應(yīng)用程序破壞操作系統(tǒng)使用過程中的數(shù)據(jù)。
2> 隔離任務(wù),以防止一個(gè)任務(wù)訪問其他任務(wù)的數(shù)據(jù)。
3> 將SRAM或者RAM空間定義為不可執(zhí)行,防止代碼注入。
② 讀寫區(qū)域的保護(hù)。
設(shè)置指定的區(qū)域?yàn)橹蛔x,可以有效的防止比較關(guān)鍵的數(shù)據(jù)被錯(cuò)誤修改。
2)MPU的檢測功能
指可以檢測堆和棧的溢出情況及數(shù)組有沒有越界。
功能安全中對(duì)內(nèi)存分區(qū)MPU的相關(guān)描述:汽車ECU軟件是高度模塊化的嵌入式軟件,其功能實(shí)現(xiàn)是可以為非功能安全,和功能安全的SWC組合,它們分別擁有不同的ASIL安全等級(jí)。
根據(jù)ISO26262,如果嵌入式軟件包含不同ASIL等級(jí)的SWC,要么整個(gè)軟件工程都需要基于最高安全等級(jí)的要求進(jìn)行開發(fā),需要保證擁有更高安全等級(jí)的SWC的操作不會(huì)受到其他SWC的干擾,也即需要做到FFI(Freedom from interference)的設(shè)計(jì)。
基于更低安全等級(jí)要求開發(fā)的SWC,可能會(huì)出現(xiàn)錯(cuò)誤地訪問到更高安全等級(jí)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ū)儆诹硪粋€(gè)SWC
-數(shù)據(jù)不一致
-棧溢出或棧下溢
要滿足上述定義,是MPU內(nèi)存保護(hù)的目標(biāo), 也可以通過限制對(duì)于內(nèi)存以及內(nèi)存對(duì)應(yīng)的硬件的訪問。
這里的內(nèi)存分區(qū)意味著:
各OS Application運(yùn)行在相互保護(hù)(不干涉)的內(nèi)存區(qū)域 ,在某一個(gè)分區(qū)上運(yùn)行的代碼,無法修改另一個(gè)分區(qū)的內(nèi)存。
內(nèi)存分區(qū)也可以保護(hù)只讀內(nèi)存段(例如代碼執(zhí)行)以及內(nèi)存對(duì)應(yīng)的硬件。
內(nèi)存分區(qū)和用戶/特權(quán)模式可以保證SWC之前互不干擾——即使某一個(gè)SWC出現(xiàn)了內(nèi)存相關(guān)的故障,也不會(huì)對(duì)其他軟件模塊有影響。
如果一個(gè)SWC運(yùn)行在用戶模式,那么它對(duì)CPU資源/指令的訪問也是受限制的。
MPU的微控制器有專用的硬件:即內(nèi)存保護(hù)單元(MPU),來支持內(nèi)存分區(qū)。
2.RH850內(nèi)存保護(hù)單元架構(gòu)
RH850U2A芯片具有內(nèi)存保護(hù)/保護(hù)功能,防止對(duì)內(nèi)存數(shù)據(jù)的錯(cuò)誤訪問,并控制外圍模塊的寄存器。下圖1顯示了內(nèi)存保護(hù)的整體架構(gòu)。每個(gè)可編程核心(總線主機(jī))都有一個(gè)內(nèi)存保護(hù)單元(MPU),它定義了軟件訪問保護(hù)。此外,每個(gè)資源(總線從設(shè)備)都有一個(gè)守衛(wèi)來控制任何總線主設(shè)備的訪問,包括那些沒有MPU的,比如DMA。

3.使用RH850U2A的MPU
3.1RH850U2A的MPU配置過程
1)第一步,配置MPIDn寄存器。在使能了MPU功能后,哪些硬件模塊還可以訪問所有的內(nèi)存保護(hù)區(qū)域。
2)第二步,配置MPIDX寄存器。配置每一個(gè)內(nèi)存保護(hù)塊的時(shí)候,需要先配置MPIDX寄存器直沒entry ID。
3)第三步,配置MPLA寄存器。配置每一個(gè)內(nèi)存保護(hù)塊的Minimum地址。
4)第四步,配置MPUA寄存器。配置每一個(gè)內(nèi)存保護(hù)塊的Maximum地址。
5)第五步,配置MPAT寄存器。配置每一個(gè)內(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ù)接受一個(gè)32位整數(shù)參數(shù)(作為它的最后一個(gè)參數(shù)),并將其存儲(chǔ)到系統(tǒng)寄存器中,與它的第一個(gè)參數(shù)指定的數(shù)字相對(duì)應(yīng),該參數(shù)必須立即是一個(gè)常量。在RH850和以后的處理器上,它還需要另一個(gè)參數(shù),該參數(shù)指定寄存器組號(hào),它必須立即是一個(gè)常量。簡單來講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寄存器
每一個(gè)內(nèi)存保護(hù)塊都有一個(gè)IDX(最多32個(gè),0-31),在配置每一個(gè)內(nèi)存保護(hù)塊的訪問屬性的時(shí)候,首先要配置MPIDX寄存器。

示例:__LDRS(16,5,0);//通過MPIDX寄存器配置第一個(gè)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寄存器配置每一個(gè)內(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ù)后會(huì)產(chǎn)生MIP/MDP Exception(異常中斷地址偏移,0x90,如果我們?cè)O(shè)置EBASE為0x00080000,那么異常中斷的絕對(duì)地址就是0x00080090)。

在MIP/MDP Exception的異常中斷處理函數(shù)匯總一般會(huì)條用_Os_Abort觸發(fā)OS調(diào)用ShutdownHook函數(shù),在這個(gè)函數(shù)里面我們可以做一些故障信息保存動(dòng)作。
4.2 MEA和MEI寄存器
產(chǎn)生了MIP/MDP異常之后,MEA寄存器會(huì)存儲(chǔ)異常地址,MEI寄存器會(huì)存儲(chǔ)異常指令。


5.總結(jié)
本文介紹了MPU的基本原理,以及結(jié)合RH850U2A芯片詳細(xì)介紹了MPU的配置使用過程,同時(shí)介紹了MPU保護(hù)功能產(chǎn)生后如何去識(shí)別異常信息。MPU在實(shí)際項(xiàng)目功能中非常的有用,如果使能了MPU,同時(shí)能通過有效的方法記錄MPU異常中斷時(shí)的MEI/MEA寄存器的信息,那么在發(fā)生了異常復(fù)位后就能通過歷史信息來定位復(fù)位的SWC(實(shí)際項(xiàng)目中不可能一直都有仿真的機(jī)會(huì),所以這個(gè)功能非常的重要)。
Note: MPU的配置及使能一般都是在EcuM_Init之前完成。
審核編輯:劉清
-
控制器
+關(guān)注
關(guān)注
114文章
17877瀏覽量
195098 -
寄存器
+關(guān)注
關(guān)注
31文章
5619瀏覽量
130408 -
MPU6050
+關(guān)注
關(guān)注
39文章
313瀏覽量
77078 -
MCU芯片
+關(guān)注
關(guān)注
3文章
260瀏覽量
13022
原文標(biāo)題:MPU功能詳解-以RH850U2A為例
文章出處:【微信號(hào):汽車電子嵌入式,微信公眾號(hào):汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
ATmega8U2/16U2/32U2微控制器:高性能與低功耗的完美結(jié)合
RZ/V2N Group芯片:功能、特性與設(shè)計(jì)考量
RH1965MK:低噪聲、低 dropout 線性調(diào)節(jié)器的詳細(xì)解析
探索可調(diào) 2.8A 單電阻低壓差穩(wěn)壓器 RH3083MW
基于瑞薩RH850/U2x與IAR工具鏈的開發(fā)實(shí)踐網(wǎng)絡(luò)研討會(huì)回看
4.5A, 500kHz降壓開關(guān)穩(wěn)壓器RH1959技術(shù)剖析
深入剖析RH101A運(yùn)算放大器芯片規(guī)格
深入解析RH108A精密運(yùn)算放大器:特性、參數(shù)與應(yīng)用考量
如何在IAR嵌入式集成開發(fā)環(huán)境中開發(fā)和調(diào)試瑞薩RH850系列32位汽車MCU
OPTIREG? Linear TLS850C2TEVxx Demoboard:低功耗線性穩(wěn)壓器的理想之選
IAR云就緒平臺(tái)擴(kuò)展對(duì)瑞薩RH850/U2x的支持,賦能新一代汽車電子開發(fā)
IAR借助在瑞薩RH850/U2A MCU MCAL支持,加速汽車軟件開發(fā)
氮化鎵電源芯片U8723AH產(chǎn)品介紹
詳細(xì)介紹RH850U2A芯片相關(guān)的功能
評(píng)論