www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(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)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

【轉(zhuǎn)】mini2440裸機開啟MMU實驗 .text .global _start _start: ??? ldr sp, =4096?????????????????????? @ 設(shè)置棧指針

關(guān)鍵字: mmu 裸機

移植環(huán)境1,主機環(huán)境:VMare下CentOS 5.5 ,1G內(nèi)存。2,集成開發(fā)環(huán)境:Elipse IDE3,編譯編譯環(huán)境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,...

關(guān)鍵字: mini2440 u-boot 移植 dm9000驅(qū)動

移植環(huán)境1,主機環(huán)境:VMare下CentOS 5.5 ,1G內(nèi)存。2,集成開發(fā)環(huán)境:Elipse IDE3,編譯編譯環(huán)境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,...

關(guān)鍵字: eeprom i2c mini2440 u-boot 移植

從NandFlash啟動CPU的時候,CPU會自動通過其內(nèi)部硬件結(jié)構(gòu)復(fù)制NandFlash中的前4K代碼到cpu的自帶SRAM中,注意這是CPU自帶的SRAM,區(qū)別于本文所講的SDRAM,本文所指的SDRAM是外接SDR...

關(guān)鍵字: s3c2440 sdram 硬件篇

以下是驅(qū)動的源碼。#includelinux/config.h//配置頭文件#includelinux/kernel.h//用于調(diào)用kmalloc和kfree#includelinux/sched.h//調(diào)度,進(jìn)程睡眠,...

關(guān)鍵字: gpio mini2440 驅(qū)動led

接上一篇:s3c2440硬件篇之三:NandFlash(1)介紹s3c2440讀NAND Flash的步驟:①設(shè)置NFCONF 在HCLK=100Mhz的情況下,TACLS=0,TWRPH0=3,TWRPH1=0,則 N...

關(guān)鍵字: s3c2440 硬件篇 讀nandflash

1.硬件原理2440有5個16位定時器,其中0、1、2、3有PWM功能,有一根輸出引腳,可以產(chǎn)生周期性高低電平變化。定時器4沒有輸出引腳。2.芯片手冊3.mini2440電路圖4.S3C2440寄存器定時器時鐘源是PCL...

關(guān)鍵字: mini2440 硬件篇 pwm定時器

移植環(huán)境1,主機環(huán)境:VMare下CentOS 5.5 ,1G內(nèi)存。2,集成開發(fā)環(huán)境:Elipse IDE3,編譯編譯環(huán)境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc...

關(guān)鍵字: Linux mini2440 內(nèi)核 開發(fā)環(huán)境 移植

通用異步收發(fā)傳輸器(UniversalAsynchronousReceiver/Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器。UART以全雙工方式傳輸數(shù)據(jù),最簡單的連線只有2根,TxD用于發(fā)送,RxD...

關(guān)鍵字: mini2440 uart 硬件篇

//定義LED設(shè)備的名稱,這里是leds,這個模塊加載后,會自動在/dev目錄里創(chuàng)建該名字的設(shè)備文件。#define DEVICE_NAME "leds"//mini2440開發(fā)板上有4個LED(發(fā)光...

關(guān)鍵字: LED驅(qū)動 mini2440
關(guān)閉