前言
在前面的<>文章文章中我們介紹了RH850-U2A的內(nèi)存保護(hù)單元(MPU),了解了MPU的概念以及在RH850-U2A上的具體使用流程,但是對(duì)于TC3xx系列芯片的的MPU功能不甚了解。本文就來(lái)詳細(xì)介紹下TC3xx芯片的MPU功能。
縮略詞
簡(jiǎn)寫(xiě) | 全稱(chēng) |
MPU | MemoryProtecionUnit |
PS | ProtectionSet |
PSW | ProgramStateWord |
參考文檔:
1. TriCoreTM TC1.6.2 core architecture manual
2. AURIXTC3XX_um_part1_v2.0.pdf
3.MPU功能詳解-以RH850U2A為例
4.TC3xx芯片的Trap詳解
注:本公眾號(hào)文章中使用了一些第三方工具和文檔,若有侵權(quán),請(qǐng)聯(lián)系作者刪除!
正文
1.TC3xx芯片MPU介紹
MPU內(nèi)存保護(hù)是芯片的硬件的機(jī)制,可保護(hù)用戶(hù)指定的內(nèi)存范圍免受未經(jīng)授權(quán)的讀取,寫(xiě)入或指令提取訪(fǎng)問(wèn)的影響。通過(guò)MPU配置,把芯片的Memory劃分為位若干(有大小限制)區(qū)域,每個(gè)區(qū)域可以配置讀(DataRead)、寫(xiě)(DataWrite)、執(zhí)行(CodeFetch)權(quán)限。配置MPU且使能MPU后,如果訪(fǎng)問(wèn)某個(gè)內(nèi)存區(qū)域但是改內(nèi)存區(qū)域沒(méi)有配置對(duì)應(yīng)的權(quán)限,就會(huì)產(chǎn)生MPUTrap。
1.1TC3xx芯片MPU資源
以TC37x(TC1.6.2.P內(nèi)核)為例,有6個(gè)Memory Protection Register Sets;TC37x芯片有3個(gè)Core,每個(gè)核有18個(gè)Data Memory Protection Ranges,10個(gè)Code Protection Ranges。
Note: 后文會(huì)介紹什么是Memory Protection Sets,Data/Code Protection Range.
1.2 Protection Sets
官方解釋?zhuān)?/p>
作者理解:TC3xx芯片可以配置多種內(nèi)存保護(hù)集(Sets),每種內(nèi)存保護(hù)集的內(nèi)存劃分及其權(quán)限可以不一樣,這樣我們可以通過(guò)切換當(dāng)前的內(nèi)存保護(hù)集實(shí)現(xiàn)不一樣的內(nèi)存保護(hù)策略。程序狀態(tài)字寄存器的的PRS位域(PSW.PRS)確定了當(dāng)前使用內(nèi)存保護(hù)集。
1.3Protection Range
官方解釋?zhuān)?/p>
作者理解:TC3xx芯片的內(nèi)存保護(hù)Range的劃分和RH850不一樣,TC3xx的內(nèi)存保護(hù)Range還區(qū)分Data Protection Ranges和CodeProtection Ranges,對(duì)于Data Protection Ranges只能Enable讀、寫(xiě)的權(quán)限,對(duì)于Code Protection Range只能Enable可執(zhí)行(Execute Access)權(quán)限。
1.4訪(fǎng)問(wèn)權(quán)限
每個(gè)內(nèi)存保護(hù)區(qū)域可以配置它的DataRead, Data Write, Intruction Fectch權(quán)限,不過(guò)通過(guò)1.2章節(jié)可知,DataProtection Range只能配置Data Read/Write權(quán)限,Code Protection Range只能配置Instruction Fectch權(quán)限。
Note1: 兩塊不同Protection Range的公共區(qū)域的訪(fǎng)問(wèn)權(quán)限是兩塊區(qū)域訪(fǎng)問(wèn)權(quán)限的”或”關(guān)系后的訪(fǎng)問(wèn)權(quán)限。
Note2: 跨Protection Range的訪(fǎng)問(wèn)不會(huì)產(chǎn)生Trap。
Note3: 為了保持Protection Regions的分離性,Protection Region間應(yīng)該有空置的區(qū)域。
1.5使能內(nèi)存保護(hù)
配置SYSCON.PROTEN == 1即使能內(nèi)存保護(hù)功能。
1.6內(nèi)存保護(hù)Trap
使能了內(nèi)存保護(hù)后,如果產(chǎn)生Error,就會(huì)觸發(fā)對(duì)應(yīng)的Trap。可以參考<>一文。
2.TC3xx內(nèi)存保護(hù)配置
ProtectionsSets和Code/Data Protection Type在DavinciConfigurator的SIP包中根據(jù)定制的芯片類(lèi)型以及預(yù)定義好的,只要使用的在配置Protection Range的時(shí)候引用就行。
如上圖所示,我們配置了一個(gè)Data Protection Ranges,給DFlash0配置上MPU權(quán)限:
Short Name: Protection Ranges的名字。
Memory Region End Address: Protection Ranges的結(jié)束地址,必須是8字節(jié)的整數(shù)倍,且應(yīng)該大于等于StartAddress.
Memory Region Identifier: 定義可選的特定于硬件的內(nèi)存保護(hù)區(qū)域標(biāo)識(shí)符。不是必須配置項(xiàng),一般不用配置。
MemoryRegion Owner: 指定內(nèi)存保護(hù)區(qū)域是特定于OS-Applicaiton,Task, ISR ,還是全局的。如果引用了Task, ISR后,只有進(jìn)入到對(duì)應(yīng)的Task,ISR后該P(yáng)rotection Ranges才被激活。如果沒(méi)有引用,則該P(yáng)rotection一直是被激活的。
Note: 這個(gè)配置項(xiàng)需要謹(jǐn)慎配置,如果不是很確定,建議不要配置,也就是Global的。因?yàn)?,比如,我給該P(yáng)rotection Ranges配置了一個(gè)Task,那么該P(yáng)rotectionRange只有該Task才能讀寫(xiě),如果有其他的Task也讀寫(xiě)該P(yáng)rotection Ranges的話(huà),就會(huì)產(chǎn)生MPUTrap。
Memory Region Protection Unit: 配置該P(yáng)rotection Range屬于哪一個(gè)Core的Data/Code MPU Protection Ranges。
Memory Region Protection Unit Slot: 和硬件特性相關(guān),可以不用配置。
Memory Region Start Address: Protection Ranges的起始地址,必須是8字節(jié)的整數(shù)倍,且應(yīng)該大于等于EndAddress.
Memory Region Access Rights: 選擇預(yù)定義好的Protection Set的權(quán)限。
3.MPU功能驗(yàn)證
參考:<>
著重理解Trap產(chǎn)生后如何定位發(fā)生Trap的位置及產(chǎn)生Trap的原因。
4.總結(jié)
使能MPU功能后,MCU的所有內(nèi)存訪(fǎng)問(wèn)都會(huì)被監(jiān)控,一單出現(xiàn)非預(yù)期內(nèi)的內(nèi)存訪(fǎng)問(wèn)就會(huì)觸發(fā)MPU的保護(hù),產(chǎn)生MPUTrap。根據(jù)使用經(jīng)驗(yàn),MPU是把雙刃劍,用的好能把一些偶發(fā)內(nèi)存異常訪(fǎng)問(wèn)問(wèn)題扼殺在開(kāi)發(fā)階段,也能利用MPU來(lái)定位內(nèi)存非法訪(fǎng)問(wèn)問(wèn)題。用的不好,就會(huì)導(dǎo)致系統(tǒng)經(jīng)常進(jìn)入Trap(一般都會(huì)走Reset)。如果項(xiàng)目要上MPU,建議提前規(guī)劃好MPU Protection Ranges及其訪(fǎng)問(wèn)權(quán)限,這樣經(jīng)過(guò)大量的開(kāi)發(fā)過(guò)程驗(yàn)證才能確保MPU達(dá)到正向監(jiān)控的作用,而不是出現(xiàn)反作用。
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420846 -
MPU
+關(guān)注
關(guān)注
0文章
340瀏覽量
48699 -
內(nèi)存保護(hù)單元
+關(guān)注
關(guān)注
0文章
6瀏覽量
1584
原文標(biāo)題:TC3xx芯片MPU介紹
文章出處:【微信號(hào):汽車(chē)電子嵌入式,微信公眾號(hào):汽車(chē)電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論