版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、ARM期末大作業(yè),江南大學(xué)信息工程學(xué)院 微電子0701 黃兆豐 0301070112,什么叫重映射?,為存儲(chǔ)器分配地址的過程稱為存儲(chǔ)器映射。但是為了增加系統(tǒng)的靈活性,系統(tǒng)中有部分存儲(chǔ)單元可以同時(shí)出現(xiàn)在不同的地址上,這稱為存儲(chǔ)器 重映射。,ARM芯片的地址重映射映射就是一一對應(yīng)的意思。重映 射就是重新分配這種一一對應(yīng)的關(guān)系。我們可以把存儲(chǔ)器看 成一個(gè)具有輸出和輸入口的黑盒子。如下圖所示,輸入量是 地址,輸出的是對應(yīng)地址上存儲(chǔ)的數(shù)據(jù)。當(dāng)然這個(gè)黑盒子是 由很復(fù)雜的半導(dǎo)體電路具現(xiàn)的,具體的實(shí)現(xiàn)的方式我們現(xiàn)在 不管。存儲(chǔ)單位一般是字節(jié)。這樣,每個(gè)字節(jié)的存儲(chǔ)單元對 應(yīng)一個(gè)地址,當(dāng)一個(gè)合法地址從存儲(chǔ)器的地址
2、總線輸入后, 該地址對應(yīng)的存儲(chǔ)單元上存儲(chǔ)的數(shù)據(jù)就會(huì)出現(xiàn)在數(shù)據(jù)總線上面。,課本P148-154 / 核心板上的存儲(chǔ)塊,儲(chǔ)存器映射給芯片內(nèi)、外的Flash、RAM、BootBlock和外設(shè)進(jìn)行統(tǒng)一編址。即用地址表示對象。 一般芯片廠商都把這些地址分配好了,用戶只能用而不能改。如LPC2290如下表。,U13 SST39VF1601 Nor Flash(2M),核心板正面,核心板背面,U3 K9F2808U0C Nand Flash(16M),片內(nèi) SRAM(16K),U12 MT45W4MW16 PSRAM(8M),U5 CAT1025 E2PRAM(2KB),LPC2290片內(nèi)沒有ROM,也是外
3、擴(kuò)片外的Flash,復(fù)習(xí)映射示意圖,復(fù)習(xí)LPC2290映射圖,(三) P9,片內(nèi) SRAM(16K),U3 K9F2808U0C Nand Flash(16M),U13 SST39VF1601 Nor Flash(2M),U12 MT45W4MW16 PSRAM(8M),U5 CAT1025 E2PRAM(2KB),普通的單片機(jī)把可執(zhí)行代碼和數(shù)據(jù)存放到存儲(chǔ)器中。單片機(jī)中的CPU從儲(chǔ)器中取指令代碼和數(shù)據(jù)。其中存儲(chǔ)器中每個(gè)物理存儲(chǔ)單元與其地址是一一對應(yīng)而且是不可變的。如下圖,CPU讀取0 x00000000地址上存儲(chǔ)單元的過程。,ARM比較復(fù)雜。ARM芯片與普通單片機(jī)在存儲(chǔ)器地址方面的不同在于:A
4、RM芯片中有些物理存儲(chǔ)單元的地址可以根據(jù)設(shè)置變換。就是說一個(gè)物理存儲(chǔ)單元現(xiàn)在對應(yīng)一個(gè)地址,經(jīng)過設(shè)置以后,這個(gè)存儲(chǔ)單元就對應(yīng)了另外一個(gè)地址了。下圖是隨意舉了個(gè)例子(不要與ARM芯片對應(yīng)),旨在說明地址重映射的過程。下圖表示把0 x00000000地址上的存儲(chǔ)單元映射到新的地址0 x00000007上。CPU存取0 x00000007就是存取0 x00000000上的物理存儲(chǔ)單元。,下面圖a,圖b是對ARM芯片的兩種地址重映射方式的圖示。 一、假設(shè)我們的應(yīng)用程序存放在外擴(kuò)FLASH當(dāng)中,那么應(yīng)用程序的異常向量表就存放在0 x80000000起始的64個(gè)(其中有32個(gè)存放異常向量)物理存儲(chǔ)單元中。但
5、是ARM核發(fā)生異常(中斷)后是從0 x000000000 x0000003F地址范圍取異常向量的。所以要把0 x800000000 x8000003F范圍內(nèi)的存儲(chǔ)單元重新映射到0 x000000000 x0000003F地址范圍上。以后CPU存取0 x000000000 x0000003F地址就是存取0 x800000000 x8000003F范圍內(nèi)的存儲(chǔ)單元。圖a、b只顯示出第一個(gè)異常向量的地址重映射,整個(gè)異常向量表的地址重映射等同這個(gè)過程。,圖a,二、圖b描述示了ARM芯片的另外一種映射方式。這個(gè)映射可以由用戶決定采用還是不采用(相關(guān)代碼在工程文件的startup.s中,這個(gè)文件是第三方提
6、供,用戶可以修改)。這個(gè)映射主要是為了提高應(yīng)用程序異常相應(yīng)得速度。當(dāng)我們把應(yīng)用程序存放在片內(nèi)FLASH的時(shí)候,異常向量表存放在0 x000000000 x0000003F存儲(chǔ)單元內(nèi)。每次發(fā)生異常,CPU從0 x000000000 x0000003F地址上取異常向量。但是對RAM的存取速度遠(yuǎn)高于對FLASH的存取速度,所以為了提高異常相應(yīng)速度我們采取以下做法:,圖b,Step1:先把0 x000000000 x0000003F(FLASH)存儲(chǔ)單元內(nèi)的異常向量表復(fù)制到0 x400000000 x4000003F(片內(nèi)RAM的最低端64個(gè)字節(jié)的存儲(chǔ)單元)范圍內(nèi)存儲(chǔ)單元中。 Step2:把0 x40
7、0000000 x4000003F范圍內(nèi)存儲(chǔ)單元地址重新映射到0 x000000000 x0000003F地址范圍。這樣做了以后,當(dāng)異常發(fā)生的時(shí)候,CPU取異常向量就是從RAM區(qū)中的異常向量表中區(qū),速度快了。比如復(fù)位中斷發(fā)生,CPU從地址0 x00000000取指令,但此時(shí)由于已經(jīng)過地址重新映射,這個(gè)0 x00000000被地址轉(zhuǎn)換器轉(zhuǎn)換成0 x40000000,CPU實(shí)際上是取的RAM區(qū)中0 x400000000這個(gè)存儲(chǔ)單元內(nèi)的指令(異常向量)。當(dāng)然用戶可以不進(jìn)行這種映射。片內(nèi)FLASH中0 x000000000 x0000003F存儲(chǔ)單元具有一模一樣的異常向量表。只不過不進(jìn)行這種處理,異常
8、相應(yīng)速度慢一點(diǎn)。但是這種速度上的差別很多情況下是不必要在意的。 圖中的地址轉(zhuǎn)換器受控制寄存器MENMAP的控制,用戶可以設(shè)置MENMAP實(shí)現(xiàn)對地址重映射的控制。這個(gè)地址轉(zhuǎn)換器顯然是通過內(nèi)部硬件電路實(shí)現(xiàn)的。,如LPC2290沒有片內(nèi)Flash,存儲(chǔ)器映射控制寄存器MENMAP,課本P165,內(nèi)核與物理存儲(chǔ)器的關(guān)系,存儲(chǔ)器映射控制原理,當(dāng)MENMAP=2時(shí),如果訪問0 x00 x3F的數(shù)據(jù),實(shí)際上是在對0 x400000000 x4000003F進(jìn)行訪問。同樣MENMAP=3時(shí),同樣對0 x00 x3F進(jìn)行訪問,就變成訪問0 x800000000 x8000003F中的數(shù)據(jù)/指令了。,LPC221
9、0處理器的重映射機(jī)制,實(shí)驗(yàn)2.13,LPC2210處理器重映射原理圖,在實(shí)驗(yàn)中,程序?qū)⑹紫葟耐獠縁lash啟動(dòng),然后將異常向量表從Flash存儲(chǔ)器拷貝到片內(nèi)SRAM中,并進(jìn)行存儲(chǔ)器重映射,將異常向量表映射到片內(nèi)SRAM。,片外Flash,MEMMAP=0:開機(jī)默認(rèn)值,Boot裝載模式-向量表(0 x00000000-0 x0000003c)映射的是0 x7FFFE000-0 x7FFFF03c中的BootBlock;芯片復(fù)位時(shí),啟動(dòng)boot裝載程序,boot裝載程序檢查P0.14口的狀態(tài)和用戶的異常向量,判斷是進(jìn)入ISP狀態(tài)還是啟動(dòng)用戶程序,若啟動(dòng)用戶程序,則自動(dòng)設(shè)置MEMMAP=1(片內(nèi)fl
10、ash啟動(dòng))或3(片外程序存儲(chǔ)器啟動(dòng))。 很奇怪的,實(shí)驗(yàn)中,當(dāng)使用無片內(nèi)flash的LPC2210時(shí)即使設(shè)置P0.14為高低都沒關(guān)系,芯片會(huì)跳過繼而執(zhí)行片外flash中的代碼. MEMMAP=1:中斷向量表就在片內(nèi)flash中,地址就是0 x00000000-0 x0000003c,相當(dāng)于沒有映射; MEMMAP=2:最為主要的設(shè)置,即是重映射的關(guān)鍵之所在,當(dāng)設(shè)置MEMMAP=2時(shí),中斷向量表(0 x00000000-0 x0000003c)映射的是片內(nèi)SRAM中的0 x40000000-0 x4000003c中的值,而因?yàn)槭荢RAM,所以在程序運(yùn)行的過程中是可以改變的,這樣就可以達(dá)到重映射的
11、目的啦(中斷向量表可以隨時(shí)修改)。 MEMMAP=3:中斷向量表就在片外flash中,中斷向量表(0 x00000000-0 x0000003c)映射到的是片外flash中的0 x80000000-0 x8000003c中的值;功能上與MEMMAP=1時(shí)的差不多,因?yàn)橐坏┏绦蚬袒絝lash中,即為只讀,只是數(shù)值映射而已。,*,實(shí)驗(yàn)2.13,存儲(chǔ)器重映射實(shí)驗(yàn),1.實(shí)驗(yàn)?zāi)康?通過實(shí)驗(yàn),熟悉LPC2000系列ARM7微控制器的存儲(chǔ)器重映射機(jī)制。 2.實(shí)驗(yàn)設(shè)備 硬件:PC機(jī)一臺(tái),MagicARM2200教學(xué)實(shí)驗(yàn)開發(fā)平臺(tái)一套。 軟件:Windows98/XP/2000系統(tǒng),ADS1.2集成開發(fā)環(huán)境。,
12、3.實(shí)驗(yàn)內(nèi)容 (1)設(shè)置MEMMAP=2 首先將 0 x400000000 x4000003F地址上的存 儲(chǔ)單元全部寫入0 x55,單步運(yùn)行 ,同時(shí)觀察 0 x000000000 x0000003F地址上的數(shù) 據(jù); 再寫入0 xAA,同時(shí)觀察 0 x000000000 x0000003F地址上的數(shù)據(jù)。 (2)設(shè)置MEMMAP=0,觀察0 x00000000 0 x0000003F地址上的數(shù)據(jù)是否 與0 x7FFFE0000 x7FFFE03F地址上的 數(shù)據(jù)一致。,內(nèi)部SRAM,Boot裝載程序模式,即假設(shè)其為中斷向量值,4.實(shí)驗(yàn)預(yù)習(xí)要求 仔細(xì)閱讀參考文獻(xiàn)【1】第5.3節(jié)存儲(chǔ)器重 映射的說明,第
13、5.4.8節(jié)P165的存儲(chǔ)器映射控制。 5.實(shí)驗(yàn)步驟 (1)啟動(dòng)ADS1.2,使用ARM Executable Image for MagicARM2200工程模版建 立一個(gè)工程ReMap_c。 (2)在user組中的main.c中編寫主程序代碼。 (3)選用DebugInExram生成目標(biāo),然后編 譯連接工程。,片外RAM調(diào)試模式,(4)選擇【Project】【Debug】, 啟動(dòng)AXD進(jìn)行JTAG仿真測試。 (5)打開存儲(chǔ)器觀察窗口(Memory) 設(shè)置觀察地址為0 x0, (6)單步運(yùn)行程序,觀察 0 x000000000 x0000003F地址 上的數(shù)據(jù)。,(7)當(dāng)運(yùn)行MEMMAP=0
14、之后,觀察 0 x000000000 x0000003F地址上 的數(shù)據(jù)是否與0 x7FFFE000 0 x7FFFE03F地址上的數(shù)據(jù)是否 一致。 6.實(shí)驗(yàn)參考程序 存儲(chǔ)器重映射實(shí)驗(yàn)的參 考程序見程序清單。,貼這個(gè)程序是不對的,應(yīng)該是main.c,程序運(yùn)行前各個(gè)存儲(chǔ)器的值,64字節(jié)的中斷向量值,SRAM中的隨機(jī)值,執(zhí)行到mina.c斷點(diǎn)處 0 x0全清零 MEMMAP=2,設(shè)置了MEMMAP=2,就等于使得地址0 x0和地址0 x40000000之后的64字節(jié)的內(nèi)容相等,實(shí)驗(yàn)結(jié)果證明重映射正確,續(xù) 結(jié)果正確,程序運(yùn)行前各個(gè)存儲(chǔ)器的值,64字節(jié)的中斷向量值,設(shè)置了MEMMAP=0,就等于使得地址
15、0 x0和地址0 x7FFFE000之后的64字節(jié)的內(nèi)容相等,MEMMAP=0,實(shí)驗(yàn)結(jié)果,在MEMMAP=2(二進(jìn)制為10)時(shí),進(jìn)入用戶 片內(nèi)RAM模式。單步運(yùn)行 ,數(shù)據(jù)存儲(chǔ)單元中的數(shù)據(jù)會(huì)按照程序由“00”變成“55”。,依次點(diǎn)擊單步運(yùn)行 ,可以看見觀察窗口 表中的數(shù)據(jù)依次從“00”變成“55”。如此循環(huán)。,第一個(gè)循環(huán)結(jié)束之后,繼續(xù)點(diǎn)擊單步運(yùn) 行 ,進(jìn)行第二個(gè)循環(huán),將“55”改成了“AA”。,依次點(diǎn)擊單步運(yùn)行,可以清楚看到,觀 察窗中表內(nèi)數(shù)據(jù)“55”依次被更改為“AA”。,第二個(gè)循環(huán)結(jié)束后,進(jìn)入MEMMAP=0(二進(jìn) 制00)模式,即Boot Block(引導(dǎo)塊)模式。如圖 所示是觀察窗Tab
16、1中的數(shù)據(jù)。,如上圖所示為Tab2中的數(shù)據(jù),是0 x7fffe000之后一段地址的上的數(shù)據(jù),對比Tab1中的數(shù)據(jù),不難發(fā)現(xiàn)0 x7FFFE000 0 x7FFFE030與0 x000000000 x00000030上的數(shù)據(jù)是相同 的。,對實(shí)驗(yàn)結(jié)果的分析,實(shí)驗(yàn)開始執(zhí)行程序,首先進(jìn)入的是用戶片內(nèi)RAM模式, 即MEMMAP=2(二進(jìn)制10),此模式下,將存儲(chǔ)器重映 射到片內(nèi)RAM 上。 即將0 x000000000 x0000003F中的數(shù)據(jù)重映射到片內(nèi)RAM0 x400000000 x4000003F 這段地址上。 實(shí)驗(yàn)程序中,更改了RAM 上0 x400000000 x400000 3F 這段
17、地址所對應(yīng)的數(shù)據(jù),由于重映射機(jī)制的原因,以上 兩段地址都同時(shí)指向這段數(shù)據(jù),因此, 0 x400000000 x4 000003F 上的數(shù)據(jù)被更改, 0 x000000000 x0000003F上 所顯示的數(shù)據(jù)也自然有同樣的變化。 當(dāng)進(jìn)入Boot Block引導(dǎo)塊模式,即MEMMAP=0(二進(jìn) 制00),此模式下,將存儲(chǔ)器重映射到Boot Block上。0 x0 00000000 x0000003F 指向0 x7FFFE0000 x7FFFE03F所 對應(yīng)的數(shù)據(jù),這兩段地址都指向相同的數(shù)據(jù),顯示結(jié)果相同。,7.思考 (1)實(shí)驗(yàn)工程中的啟動(dòng)代碼Target.c文件, 在TargetResetInit()函數(shù)的 MEMMAP寄存器的設(shè)置依據(jù)是什么? (2)請說明存儲(chǔ)器重映射機(jī)制在JTAG調(diào)試 時(shí)的作用。,(1)實(shí)驗(yàn)工程中的啟動(dòng)代碼Target.c文件,在Target ResetInit()函數(shù)的MEMMAP寄存器的設(shè)置依據(jù) 是什么? MENMAP寄存器:存儲(chǔ)器映射控制寄存器。MEMMAP寄存器是依據(jù)操作對象的情況設(shè)置。 當(dāng)MEMMAP【1:0】=00
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)員工培訓(xùn)與職業(yè)發(fā)展目標(biāo)路徑素質(zhì)制度
- 企業(yè)成本控制制度
- 2026湖北省定向哈爾濱工業(yè)大學(xué)選調(diào)生招錄備考題庫附答案
- 2026福建省面向蘭州大學(xué)選調(diào)生選拔工作參考題庫附答案
- 會(huì)議風(fēng)險(xiǎn)評(píng)估與應(yīng)對措施制度
- 2026貴州黔東南州特種設(shè)備檢驗(yàn)所招聘備考題庫附答案
- 2026重慶奉節(jié)縣石崗鄉(xiāng)委員會(huì)公開選聘村(社區(qū))后備干部25人參考題庫附答案
- 2026陜西省面向中央民族大學(xué)招錄選調(diào)生備考題庫附答案
- 2026青海西寧市消防救援支隊(duì)招聘54人參考題庫附答案
- 中共雅安市委辦公室互聯(lián)網(wǎng)信息中心2025年公開選調(diào)事業(yè)人員的(2人)參考題庫附答案
- 一年級(jí)地方課程教案
- 剪刀車專項(xiàng)施工方案
- 授信合同與借款合同(標(biāo)準(zhǔn)版)
- 2024-2025學(xué)年四川省綿陽市七年級(jí)(上)期末數(shù)學(xué)試卷
- SF-36評(píng)估量表簡介
- 道路清掃保潔、垃圾收運(yùn)及綠化服務(wù)方案投標(biāo)文件(技術(shù)標(biāo))
- 合成藥物催化技術(shù)
- 【語文】福建省福州市烏山小學(xué)小學(xué)三年級(jí)上冊期末試題(含答案)
- 建立鄉(xiāng)鎮(zhèn)衛(wèi)生院孕情第一時(shí)間發(fā)現(xiàn)制度或流程
- 睡眠科普課課件
- 2025年中級(jí)衛(wèi)生職稱-主治醫(yī)師-放射醫(yī)學(xué)(中級(jí))代碼:344歷年參考題庫含答案解析(5卷)
評(píng)論
0/150
提交評(píng)論