在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于ARM芯片地址重映射的形象解釋

            關(guān)于ARM芯片地址重映射的形象解釋

            作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
            ARM芯片地址重映射映射就是一一對(duì)應(yīng)的意思。重映射就是重新分配這種一一對(duì)應(yīng)的關(guān)系。我們可以把存儲(chǔ)器看成一個(gè)具有輸出和輸入口的黑盒子。如下圖所示,輸入量是地址,輸出的是對(duì)應(yīng)地址上存儲(chǔ)的數(shù)據(jù)。當(dāng)然這個(gè)黑盒子是由很復(fù)雜的半導(dǎo)體電路具現(xiàn)的,具體的實(shí)現(xiàn)的方式我們現(xiàn)在不管。存儲(chǔ)單位一般是字節(jié)。這樣,每個(gè)字節(jié)的存儲(chǔ)單元對(duì)應(yīng)一個(gè)地址,當(dāng)一個(gè)合法地址從存儲(chǔ)器的地址總線輸入后,該地址對(duì)應(yīng)的存儲(chǔ)單元上存儲(chǔ)的數(shù)據(jù)就會(huì)出現(xiàn)在數(shù)據(jù)總線上面。

            本文引用地址:http://www.biyoush.com/article/201611/321548.htm
            圖1
            普通的單片機(jī)把可執(zhí)行代碼和數(shù)據(jù)存放到存儲(chǔ)器中。單片機(jī)中的CPU從儲(chǔ)器中取指令代碼和數(shù)據(jù)。其中存儲(chǔ)器中每個(gè)物理存儲(chǔ)單元與其地址是一一對(duì)應(yīng)而且是不可變的。如下圖,CPU讀取0x00000000地址上存儲(chǔ)單元的過(guò)程。


            圖2
            ARM比較復(fù)雜。ARM芯片與普通單片機(jī)在存儲(chǔ)器地址方面的不同在于:ARM芯片中有些物理存儲(chǔ)單元的地址可以根據(jù)設(shè)置變換。就是說(shuō)一個(gè)物理存儲(chǔ)單元現(xiàn)在對(duì)應(yīng)一個(gè)地址,經(jīng)過(guò)設(shè)置以后,這個(gè)存儲(chǔ)單元就對(duì)應(yīng)了另外一個(gè)地址了。圖3是隨意舉了個(gè)例子(不要與ARM芯片對(duì)應(yīng)),旨在說(shuō)明地址重映射的過(guò)程。圖3表示把0x00000000地址上的存儲(chǔ)單元映射到新的地址0x00000007上。CPU存取0x00000007就是存取0x00000000上的物理存儲(chǔ)單元。

            圖3
            下面圖4,圖5是對(duì)ARM芯片的兩種地址重映射方式的圖示。假設(shè)我們的應(yīng)用程序存放在外擴(kuò)FLASH當(dāng)中,那么應(yīng)用程序的異常向量表就存放在0x80000000起始的64個(gè)(其中有32個(gè)存放異常向量)物理存儲(chǔ)單元中。但是ARM核發(fā)生異常(中斷)后是從0x00000000~0x0000003F地址范圍取異常向量的。所以要把0x80000000~0x8000003F范圍內(nèi)的存儲(chǔ)單元重新映射到0x00000000~0x0000003F地址范圍上。以后CPU存取0x00000000~0x0000003F地址就是存取0x80000000~0x8000003F范圍內(nèi)的存儲(chǔ)單元。圖4只顯示出第一個(gè)異常向量的地址重映射,整個(gè)異常向量表的地址重映射等同這個(gè)過(guò)程。

            圖4

            圖5
            圖5描述示了ARM芯片的另外一種映射方式。這個(gè)映射可以由用戶決定采用還是不采用(相關(guān)代碼在工程文件的startup.s中,這個(gè)文件是第三方提供,用戶可以修改)。這個(gè)映射主要是為了提高應(yīng)用程序異常相應(yīng)得速度。當(dāng)我們把應(yīng)用程序存放在片內(nèi)FLASH的時(shí)候,異常向量表存放在0x00000000~0x0000003F存儲(chǔ)單元內(nèi)。每次發(fā)生異常,CPU從0x00000000~0x0000003F地址上取異常向量。但是對(duì)RAM的存取速度遠(yuǎn)高于對(duì)FLASH的存取速度,所以為了提高異常相應(yīng)速度我們采取以下做法:
            Step1:
            先把0x00000000~0x0000003F(FLASH)存儲(chǔ)單元內(nèi)的異常向量表復(fù)制到0x40000000~0x4000003F(片內(nèi)RAM的最低端64個(gè)字節(jié)的存儲(chǔ)單元)范圍內(nèi)存儲(chǔ)單元中。
            Step2:
            把0x40000000~0x4000003F范圍內(nèi)存儲(chǔ)單元地址重新映射到0x00000000~0x0000003F地址范圍。這樣做了以后,當(dāng)異常發(fā)生的時(shí)候,CPU取異常向量就是從RAM區(qū)中的異常向量表中區(qū),速度快了。比如復(fù)位中斷發(fā)生,CPU從地址0x00000000取指令,但此時(shí)由于已經(jīng)過(guò)地址重新映射,這個(gè)0x00000000被地址轉(zhuǎn)換器轉(zhuǎn)換成0x40000000,CPU實(shí)際上是取的RAM區(qū)中0x400000000這個(gè)存儲(chǔ)單元內(nèi)的指令(異常向量)。當(dāng)然用戶可以不進(jìn)行這種映射。片內(nèi)FLASH中0x00000000~0x0000003F存儲(chǔ)單元具有一模一樣的異常向量表。只不過(guò)不進(jìn)行這種


            關(guān)鍵詞: ARM芯片地址重映

            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉