日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]MMU是內(nèi)存管理單元,負(fù)責(zé)虛擬地址到物理地址的映射和內(nèi)存訪問權(quán)限檢查。本文只講地址映射,地址映射長度有段1MB、大頁64KB、小頁4KB、極小頁1KB,本文只講段1MB的情況,其它類似。我們每個進(jìn)程的空間都是4G,不同的進(jìn)

MMU是內(nèi)存管理單元,負(fù)責(zé)虛擬地址到物理地址的映射和內(nèi)存訪問權(quán)限檢查。本文只講地址映射,地址映射長度有段1MB、大頁64KB、小頁4KB、極小頁1KB,本文只講段1MB的情況,其它類似。我們每個進(jìn)程的空間都是4G,不同的進(jìn)程的變量地址有可能一樣,這就是虛擬地址,其實它們對應(yīng)到物理地址是不一樣的。這種虛擬地址到物理地址的轉(zhuǎn)換就是MMU做的事。所以開啟MMU之后,cpu發(fā)出的地址就是虛擬地址,關(guān)閉MMU,cpu發(fā)出的地址就是物理地址,關(guān)閉MMU的時刻,一般是boot階段。


首先要建立一張映射表,按1M映射的話,4G共有4096個1M的段,每個需要4字節(jié)存儲映射的地址,所以映射表的大小是4096*4字節(jié)(即16k),映射表的地址放在內(nèi)存起始地址0x30000000。比如要把GPB的寄存器0x56000000映射到0xA0000000,0xA000000/1M=2560,所以在映射表的2560*4地址,存放0x56000000。然后把表格的首地址,即0x30000000告訴MMU,啟動MMU即可。后面操作虛擬地址0xA0000000就是操作物理地址0x56000000。


unsignedlong*mmu_tlb_base=(unsignedlong*)0x30000000;

/*

*0x56000000是GPIO寄存器的起始物理地址,

*GPBCON和GPBDAT這兩個寄存器的物理地址0x56000010、0x56000014,

*為了在第二部分程序中能以地址0xA0000010、0xA0000014來操作GPBCON、GPBDAT,

*把從0xA0000000開始的1M虛擬地址空間映射到從0x56000000開始的1M物理地址空間

*/

virtuladdr=0xA0000000;

physicaladdr=0x56000000;

*(mmu_tlb_base+(virtuladdr>>20))=(physicaladdr&0xFFF00000)|

MMU_SECDESC;

啟動MMU的代碼需要使用協(xié)處理器,需要了解arm核,暫不深入研究。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉