<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM存儲(chǔ)器之:存儲(chǔ)保護(hù)單元MPU

          ARM存儲(chǔ)器之:存儲(chǔ)保護(hù)單元MPU

          作者: 時(shí)間:2013-09-30 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/257010.htm

          15.4.2內(nèi)存訪問順序

          當(dāng)處理器產(chǎn)生一個(gè)內(nèi)存訪問信號(hào)時(shí),內(nèi)存保護(hù)單位將負(fù)責(zé)檢查要訪問的地址是否在被定義的域中。

          ①如果地址不在任何域中,存儲(chǔ)器產(chǎn)生異常。如果內(nèi)核預(yù)取指令則產(chǎn)生預(yù)取中止異常;如果是存儲(chǔ)器數(shù)據(jù)請(qǐng)求,則產(chǎn)生數(shù)據(jù)中止異常。

          ②如果地址在多個(gè)域內(nèi),由判斷域的有效級(jí)來決定存儲(chǔ)區(qū)域的訪問屬性。訪問屬性可以在CP15的寄存器中設(shè)定,可設(shè)定的位為C(Cache)、B(Buffer)、AP(AccessPermission)。這些屬性的具體定義為:

          ·C和B可以控制Cache和寫緩存屬性的Cache策略。例如,可以設(shè)置一個(gè)域使用回寫(write-back)策略訪問存儲(chǔ)器,而另一個(gè)域則以無Cache和無寫緩存方式訪問;

          ·AP(accesspermission)決定域是否可以被訪問。如果在當(dāng)前處理器模式下,該域不能被訪問,MPU將產(chǎn)生一個(gè)存儲(chǔ)器訪問異常。

          圖15.16顯示了一個(gè)存儲(chǔ)器訪問過程。

          圖15.16存儲(chǔ)器訪問過程

          15.4.3

          通過對(duì)協(xié)處理器CP15的寄存器c1中的bit[0]置1,可以使能存儲(chǔ)器保護(hù)單元MPU。在系統(tǒng)上電時(shí),默認(rèn)狀態(tài)是該位清零,所有無效。

          之前,至少一個(gè)域要被設(shè)定,而且該域的屬性和訪問權(quán)限要預(yù)先設(shè)定好。

          注意

          在數(shù)據(jù)和指令域分離的系統(tǒng)中,如940T,在指令和數(shù)據(jù)域中都要有一個(gè)有效域被預(yù)先設(shè)定好。

          另外,的指令要設(shè)在有效的域中。如果在使能MPU之前,域的屬性和訪問權(quán)限沒有設(shè)定,那么系統(tǒng)的運(yùn)行結(jié)果將不可預(yù)知。

          當(dāng)MPU無效(將協(xié)處理器CP15寄存器r1的bit[0]置0)時(shí),整個(gè)內(nèi)存區(qū)域都被處理器視為無Cache、無寫緩存、無存儲(chǔ)保護(hù)狀態(tài)。

          15.4.4重疊域

          域的定義在MPU的作用下可以重疊。當(dāng)重疊的域被訪問時(shí),MPU會(huì)判斷域的優(yōu)先權(quán),決定使用那個(gè)域的屬性來操作重疊域。

          域?qū)傩詢?yōu)先級(jí)的排列順序?yàn)椋河?的有效級(jí)最高,其次為域6,域0的優(yōu)先級(jí)最低。

          【例15.3】

          假設(shè)將一個(gè)從0x3000起始的4KB地址空間定義為域2,其訪問屬性AP定義為0b10(AP=0b10,特權(quán)模式讀/寫訪問,用戶模式只讀)。

          將起始地址為0x0的16KB地址空間定義為域1,其訪問屬性AP定義為0b01(AP=0b01,特權(quán)模式只讀)。

          系統(tǒng)域劃分如圖15.17所示。

          圖15.17重疊域的訪問

          當(dāng)處理器在用戶模式下執(zhí)行Load指令,從0x3010地址取數(shù)據(jù)時(shí),0x3010地址既在域1中也在域2中,因?yàn)橛?的屬性優(yōu)先級(jí)高于域1,所有MPU執(zhí)行域2的訪問屬性從0x3010地址取數(shù)據(jù)。域2是用戶模式可讀,所以不會(huì)發(fā)生數(shù)據(jù)異常。

          在分配訪問權(quán)限時(shí)重疊區(qū)域比非重疊區(qū)域有更大的靈活性,它可以使內(nèi)存的某個(gè)特定聯(lián)系內(nèi)存單位在程序中擔(dān)任背景的作用,用來給一塊大存儲(chǔ)空間分配相同的屬性的低優(yōu)先級(jí)域。其他具有較高優(yōu)先級(jí)域的區(qū)域與該背景域某些部分重疊,用來改變已定義的背景域的較小子集的屬性。這樣,具有較高優(yōu)先級(jí)的域可以改變背景域?qū)傩缘淖蛹?。背景域可以用來保護(hù)一些睡眠狀態(tài)的存儲(chǔ)空間,使其不受非法訪問,而此時(shí)由另一個(gè)不同域控制下的背景域的其他部分可以處于活躍狀態(tài)。

          15.4.5與MPU相關(guān)的CP15寄存器

          與MPU相關(guān)的協(xié)處理器寄存器主要是c2,c3,c5及c6。另外還有寄存器c1中的1到2位。

          (1)c1中的MPU相關(guān)位

          c1的編碼格式如圖15.18所示。

          圖15.18協(xié)處理器寄存器c1編碼格式

          M(bit[0])控制控制MPU的使能。

          ·M=0:禁止MPU

          ·M=1:使能MPU

          A(bit[1])選擇是否支持內(nèi)存訪問地址對(duì)齊檢查。

          ·B=0:禁止地址對(duì)齊檢查

          ·B=1:使能地址對(duì)齊檢查

          (2)c2中的MPU相關(guān)位

          c2的編碼格式如圖15.19所示。

          圖15.19協(xié)處理器寄存器c2編碼格式

          寄存器位0~7分別對(duì)應(yīng)域0~7的Cache屬性。位8~31應(yīng)該設(shè)置成0。

          注意

          在數(shù)據(jù)和指令分離的系統(tǒng)中,通過MRC和MCR指令的第二個(gè)操作數(shù)opcode2>來決定讀寫D-Cache和I-Cache屬性。

          存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理




          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();