娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月05日(星期四)

2018年06月05日 | ARM地址重映射機(jī)制

發(fā)布者:電子藝術(shù)大師 來源: eefocus關(guān)鍵字:ARM  地址重映射機(jī)制 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

ARM體系結(jié)構(gòu)中,系統(tǒng)上電或復(fù)位后,處理器將從地址0x0處取第一條指令,因此,上電的時(shí)候,地址0x0處必須是非易失性的ROM或FLASH。但是,為了加快中斷響應(yīng)速度,方便更改中斷向量表,有時(shí)需要把中斷向量表復(fù)制到RAM中去,然后把RAM重新映射到地址0x0處,這就用到了地址重映射機(jī)制。因?yàn)榈刂分赜成涫窃诔绦驁?zhí)行過程中進(jìn)行的,必須考慮程序執(zhí)行流程的連續(xù)性。

引導(dǎo)加載程序:

一個(gè)嵌入式系統(tǒng)的軟件通常可以分為3個(gè)部分:引導(dǎo)加載程序, 嵌入式操作系統(tǒng), 用戶應(yīng)用程序. 引導(dǎo)加載程序是系統(tǒng)加電后運(yùn)行的第一段軟件代碼. 簡(jiǎn)單地說, 就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序(在嵌入式系統(tǒng)中通常叫做Bootloader). 通過這段小程序, 可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖, 從而將系統(tǒng)的軟硬件環(huán)境配置到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核設(shè)置適當(dāng)?shù)沫h(huán)境. 而在嵌入式系統(tǒng)中, 通常并沒有像PC機(jī)中BIOS那樣的固件程序(有的嵌入式CPU也會(huì)內(nèi)嵌一段短小的啟動(dòng)程序), 因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由Bootloader來完成. 由于每個(gè)用戶對(duì)嵌入式CPU的應(yīng)用千差萬別, 每個(gè)用戶對(duì)系統(tǒng)的啟動(dòng)有不同的要求, 所以Bootloader程序一般都由用戶根據(jù)自己的實(shí)際要求編寫.


ARM處理器的地址重映射機(jī)制可分為三種情況:1、處理器內(nèi)部有專門的寄存器完成重映射(Remap),只需將Remap寄存器相應(yīng)位置“1”,由硬件邏輯來完成地址的重新映射。2、沒有專門的Remap控制寄存器,需要重新改寫用于控制存儲(chǔ)器起始地址的塊(Bank)寄存器,來實(shí)現(xiàn)Remap。3、沒有Remap寄存器,而Bank寄存器的起始地址固定,這就需要MMU實(shí)現(xiàn)地址重映射。另外,有一些ARM處理器沒有地址重映射機(jī)制。

(第一種情況)由于處理器地址重映射機(jī)制不同,其具體實(shí)現(xiàn)方式也是不同的。AT91M55800A采用一個(gè)專用寄存器EBI_RCR(重映射控制寄存器),通過向EBI_RCR的RCB寄存器的第0位寫“1”實(shí)現(xiàn)地址重映射。系統(tǒng)復(fù)位瞬間,系統(tǒng)將FLASH地址映射在0x0的位置,而將內(nèi)部SRAM映射在0x00300000的位置。啟動(dòng)代碼需將FLASH中的中斷向量拷貝到內(nèi)部SRAM中,然后,執(zhí)行重映射命令,把內(nèi)部SRAM的地址重新映射到0x0的位置,而將FLASH的地址映射到其他位置,如0x01000000(由NCS0片選,配置EBI—CSR0寄存器)的位置。這樣便可以在內(nèi)部SRAM中0x0開始的位置修改中斷向量。同時(shí),為了保證程序執(zhí)行流程的連續(xù)性,必須調(diào)整PC指針,即調(diào)整到程序真正被連接的地方(0x01000000)去。這時(shí),程序仍在FLASH中運(yùn)行。如下所示:

(第二種情況)三星S3C4510B最大可尋址空間為64MB,它把64MB的地址空間分為10個(gè)塊,每個(gè)塊的起始地址和大小都可以通過寄存器來設(shè)置。上電時(shí)默認(rèn)FLASH映射到地址空間為0x0000,0000~0x0200,0000的位置,這樣,程序從FLASH中的啟動(dòng)代碼開始執(zhí)行。在啟動(dòng)代碼中,把SDRAM映射到地址空間的其他位置,如0x0040,0000~(0x0140,0000-1)。接著將FLASH中從0x0開始的程序一一對(duì)應(yīng)地復(fù)制到SDRAM中從0x0040,0000開始的地址空間,然后,把SDRAM映射到從0x0開始的地址空間,F(xiàn)LASH映射到其他位置,如從0x0100,0000開始的地址空間,至此,完成了地址重映射。而它的PC指針不需要調(diào)整,這時(shí)的PC指針已經(jīng)指向SDRAM中了。

開始啟動(dòng)時(shí), 存有啟動(dòng)代碼的FlashROM被映射到0x0000000地址, 系統(tǒng)從此開始運(yùn)行. 但在實(shí)際應(yīng)用中, 為提高系統(tǒng)的實(shí)時(shí)性, 加快代碼的執(zhí)行速度, 系統(tǒng)啟動(dòng)后程序往往要被搬移到存取速度要比FlashROM快得多的SDRAM中, 以此大幅提高系統(tǒng)的實(shí)時(shí)性能.又由于S3C4510B芯片中的異常中斷入口地址被固定在0x0000000開始的8個(gè)字(每個(gè)字包括4個(gè)字節(jié))中, 因而系統(tǒng)只能將存儲(chǔ)器進(jìn)行地址重映射( Remap),把SDRAM映射到0x000000地址處, 把FlashROM的地址映射到系統(tǒng)高端地址.S3C4510B硬件系統(tǒng)有4MB的FlashROM, 使用16位數(shù)據(jù)總線; 16MB的SDRAM, 使用32位數(shù)據(jù)總線. 如圖2所示, Remap前系統(tǒng)地址0x0000000~0x03FFFFF 分配給 Flash ROM, 0x0400000 ~0x13FFFFF分配給SDRAM; Remap后0x0000000~0x0FFFFFF分配給SDRAM, 0x1000000~ 0x13FFFFF分配給FlashROM。

Remap后, SDRAM被映射到0x0000000~0x0FFFFFF的地址空間, 而FlashROM則被映射到高于0x0FFFFFF的地址上. 為保證Remap后程序能夠正常運(yùn)行, 整個(gè)過程必須確保FlashROM中的代碼和數(shù)據(jù)地址不變地被移到SDRAM中.程序編譯時(shí)鏈接器ARMLink將自動(dòng)生成RO段、RW段和ZI段3種段, 同時(shí)還將產(chǎn)生這3種段的起始和終止定位信息: Image

RORO

Base、Image

RORO

Limit、Image 

RW$$Base、Image$RW$Limit、Image$ZI$Base和ImageRW$$Base、Image$RW$Limit、Image$ZI$Base和Image

ZI

?Limi.t使用這些定位信息,將FlashROM中的代碼和數(shù)據(jù)搬移到SDRAM中,源程序如下:StartFlashDCD|Image?Limi.t使用這些定位信息,將FlashROM中的代碼和數(shù)據(jù)搬移到SDRAM中,源程序如下:StartFlashDCD|Image

RO$ $Base|
End_FlashDCD  |Image

RO$$Limit|StartBSSDCD|ImageRO$$Limit|StartBSSDCD|Image

RW

Base|EndBSSDCD|ImageBase|EndBSSDCD|Image

RW

Limit|StartZeroDCD|ImageLimit|StartZeroDCD|Image

ZI

Base|EndZeroDCD|ImageBase|EndZeroDCD|Image

ZI$$Limit|; / /復(fù)制FlashROM中的代碼到SDRAM中/ /;


LDRr0, = Start_Flash
LDRr1, = End_Flash
LDRr2, = Start_BSS
LDRr3, = End_BSS
SUBr1, r1, r0
SUBr3, r3, r2
ADDr1, r1, r3
LDRr2, = 0x400000; / /Remap前SDRAM起始地址
COPLDRr3, [ r0], #4
STRr3, [ r2], #4
SUBSr1, r1, #4
BNECOP
LDRr0, = End_Flash
LDRr1, = Start_BSS
LDRr3, = Start_Zero
CMP r0, r1
BEQLOOP1
; / /復(fù)制RW段到SDRAM/ /
LOOPCMP r1, r3
LDRCCr2, [ r0], #4
STRCCr2, [ r1], #4
BCCLOOP
; / /復(fù)制ZI段并清0/ /
LOOP1LDRr1, =End_Zero
MOVr2, #0
LOOP2CMP r3, r1 ;
STRCCr2, [ r3], #4
BCCLOOP2
在實(shí)際應(yīng)用系統(tǒng)中, 由于FlashROM存儲(chǔ)器相對(duì)而言比較小速度慢且價(jià)格高, 為了節(jié)約成本提高運(yùn)行速度, 通常將會(huì)把應(yīng)用程序和在存儲(chǔ)器中的數(shù)據(jù)先壓縮然后再寫入FlashROM中同時(shí)將解壓縮程序也寫進(jìn)去. 當(dāng)系統(tǒng)上電啟動(dòng)后, 在搬移程序和數(shù)據(jù)時(shí)解壓程序先將被壓縮過的程序和數(shù)據(jù)解壓后再搬到SDRAM的適當(dāng)位置中. 由于壓縮解壓程序比較復(fù)雜不在這里討論。

 

(第三種情況)三星S3C44B0X的地址空間分成8個(gè)塊,Bank0~Bank6的起始地址固定,大小可變。Bank7雖起始地址可變,但只是為了保證與Bank6地址連續(xù),因?yàn)锽ank6、Bank7主要用于DRAM。S3C44B0X沒有提供地址重映射機(jī)制。三星S3C2410X把1GB的地址空間分為8個(gè)塊(Bank0~ Bank7),它們的起始地址固定,大小可變。S3C2410X沒有進(jìn)行地址重映射的控制寄存器,只有內(nèi)存管理單元(MMU)。MMU把物理地址空間映射到虛擬地址空間,通過這種方式可以實(shí)現(xiàn)地址重映射。

 

(第四種情況)Intel公司StrongRAM SA-1110和XscalePXA255微處理器存儲(chǔ)區(qū)域分成若干塊,每個(gè)塊的起始地址固定。它們都沒有地址重映射機(jī)制,但可采用存儲(chǔ)器管理單元來完成地址映像的重映射。


關(guān)鍵字:ARM  地址重映射機(jī)制 引用地址:ARM地址重映射機(jī)制

上一篇:關(guān)于S3C2440存儲(chǔ)器地址分配和啟動(dòng)流程分析
下一篇:SC2440虛擬地址到物理地址的轉(zhuǎn)換

推薦閱讀

今年的WWDC已經(jīng)開幕,蘋果在iOS、WatchOS、tvOS以及MacOS四大系統(tǒng)上進(jìn)行了部分功能升級(jí)。在聽完iOS系統(tǒng)之后,很多網(wǎng)友已經(jīng)開始吐槽,蘋果似乎升級(jí)了一堆國(guó)產(chǎn)安卓手機(jī)廠商玩膩歪的功能:比如照片分類處理、手機(jī)使用分析、通知分組……這場(chǎng)軟件上的升級(jí)已經(jīng)被國(guó)產(chǎn)手機(jī)廠商追的缺少了亮點(diǎn)。  如此,與剛剛結(jié)束的“AI貫穿一切”的谷歌I/O大會(huì)、微軟Build開發(fā)...
每當(dāng)夜幕降臨的時(shí)候,在一片黑暗的世界里,沒有絲毫陽光的地方抬頭仰望星空,你就會(huì)發(fā)現(xiàn)繁星點(diǎn)點(diǎn)的夜空是那么絢麗,其中有一顆最大星星就是太陽系中的木星,要知道木星是太陽系最大的行星,它距離地球只有10億公里,而且它本身還攜帶著79顆衛(wèi)星,其中歐羅巴是最著名的衛(wèi)星之一。現(xiàn)在,美國(guó)宇航局有了一個(gè)大膽的計(jì)劃,就是研發(fā)一個(gè)機(jī)器人,使用核能源去歐...
翻譯自——allaboutcircuits 為了滿足圖像系統(tǒng)越來越廣泛的要求,無論是個(gè)人還是專業(yè)的應(yīng)用,科研還是工業(yè),都對(duì)圖像質(zhì)量提出了越來越高的要求。其中的一個(gè)指標(biāo)動(dòng)態(tài)范圍,是決定圖像質(zhì)量的最重要指標(biāo)。近兩年CCD和CMOS芯片在提高動(dòng)態(tài)范圍上都獲得了很大的進(jìn)步,例如CCD利用類似于雪崩二極管的撞擊(impationigation)現(xiàn)象,產(chǎn)生電子倍增效果。 本章節(jié)重點(diǎn)...
Taito 是日本的一家視頻游戲發(fā)行商,主打特色就是以迷你主機(jī)的形式運(yùn)行復(fù)古舊硬件。該公司此前曾發(fā)布了《Space Invaders》和《Bubble Bobble》等經(jīng)典游戲,現(xiàn)在該公司推出了 Egret II Mini,這和世嘉的 Astro City Mini 一樣,是一個(gè)流行街機(jī)的縮小版。  原版 Egret II 是在 90 年代發(fā)布,主要特點(diǎn)是將屏幕旋轉(zhuǎn) 90 度,所以像《...

史海拾趣

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 大连市| 吉林市| 杭锦旗| 财经| 微博| 平潭县| 宜宾县| 古浪县| 孟津县| 尉犁县| 手游| 桓仁| 怀仁县| 无为县| 东宁县| 泗洪县| 集贤县| 绥滨县| 阿合奇县| 城市| 且末县| 博罗县| 新密市| 礼泉县| 来宾市| 星座| 昌宁县| 儋州市| 甘孜县| 克拉玛依市| 孙吴县| 宝坻区| 筠连县| 绍兴市| 芒康县| 大悟县| 锡林郭勒盟| 宁阳县| 平陆县| 罗平县| 铜陵市|