在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > 嵌入式系統(tǒng) > 設計應用 > arm(lpc22xx)存儲器尋址

            arm(lpc22xx)存儲器尋址

            作者: 時間:2016-11-10 來源:網(wǎng)絡 收藏
            LPC2220/2230/2290沒有內部FLASH

            片內FLASH

            本文引用地址:http://www.biyoush.com/article/201611/317252.htm

            LPC2000系列ARM的片內FLASH通過128位寬度的總線與ARM內核相連,具有很高的速度,加上后面要介紹的存儲器加速功能,可以使程序直接在FLASH上運行,而不需要象其它公同的ARM微控制器一樣把程序復制到RAM中運行

            對處內FLASH的編程有三種方法來實現(xiàn)

            (1)使用JTAG仿真/調試,通過芯片的JTAG接口下載程序

            (2)使用在系統(tǒng)編程技術(ISP),通過UART0接口下載程序

            (3)使用在應用編程技術(IAP)使用這種方式,可以實現(xiàn)用戶程序運行時對FLASH進行擦除/編程,這樣就為數(shù)據(jù)存儲和現(xiàn)場固件的升級都帶來極大的靈活性.

            片內靜態(tài)RAM

            LPC2000系列ARM的片內RAM為靜態(tài)的RAM,它可以用作代碼和數(shù)據(jù)的存儲.

            片外存儲器

            CPU外部擴展連接的存儲器芯片稱為片外存儲器.它們都具有數(shù)據(jù)線、地址線和控制線。(LPC2100系列不存在這種總線接口:所以只能通過I/O口的模擬總線時序來操作片外存儲器,或者使用I2C、SPI等串行接口來連片外存儲器)

            LPC2200系列ARM微控制器具備符合ARM公司的外部存儲器接口,通過它可以連接8位、16位或32位的片外存儲器。最多可以擴展4個BAND 的存儲器組,每存儲器組尋址范圍最大為16M。實際慶用中,使用16位總線寬度的存儲器可以獲得較好的性價比

            片外存儲器的讀寫

            對于外擴的SRAM存儲器只需要一條LDR(STR)指令就可以進行讀寫操作。

            對于外擴的FLASH(NOR型),可以使用LDR指令讀取數(shù)據(jù),但是不能使用STR指令直接寫數(shù)據(jù),需要根據(jù)FLASH芯片寫操作時序進行控制,實現(xiàn)FLASH的擦除編程。如果需要將程序代碼燒寫到FLASH芯片內,則需要在CPU內運行一個裝載程序Loder程序.

            存儲器映射

            給存儲器分配地址的過程稱為存儲器映射。

            存儲器的重映射:有部分存儲器單元可以出現(xiàn)在不同聽地址上

            注意:這個重映射不是將對映射單元內容的復制,而只是將多個地址指向了同一個存儲單元,這個效果是通過芯片內部的"存儲器管理部件"實現(xiàn)的.

            引導塊(Boot Block)及其得映射

            BOOT BLOCK是芯片設計廠家在LPC2000系列ARM內部固定的一段代碼,用戶無法對其修改或刪除.代碼在芯片復位后首先運行.其功能為 判斷運行哪個存儲器上的程序\檢查用戶代碼是否有效\判斷芯片是否加密\芯片的在應用編程以及在系統(tǒng)編程.

            BOOT BLOCK占用了片內FLASH的空間(除LPC2138的BOOT?。拢蹋希茫瞬徽加茫疲蹋粒樱瓤臻g),其大小為8KB..但由于各個芯片內部FLASH的空間不同所以BOOT?。拢蹋希茫说奈恢靡灿兴煌?,而BOOT?。拢蹋希茫酥械挠幸恍┏绦蚴强梢员挥脩羲{用的,為了增加用戶代碼的可移植性則將BOOT?。拢蹋希茫恕〕绦虻糜成湓趦炔看鎯ζ鞯淖罡呶恢?!即接近2G(0x80000000)的地方

            注意:部分器件內部雖然沒有用戶FLASH空間,但是它們仍然存在BOOT?。拢蹋希茫恕。⑶覐臀缓笫紫冗\行.

            ***************************************************************************

            LPC2000系列ARM芯片啟動過程LPC2000處理器啟動過程是:Memory Map--Remap--Boot--Remap四步。以LPC2292為例:片內Flash的最高8kB在芯片出廠前寫入了Bootload程序和64字節(jié)的中斷向量表,這是啟動過程中重要的內容。

            1.Memory Map(不受控制)LPC2292上電復位后,F(xiàn)lash和SRAM映射:SRAM占據(jù)0x40000000~0x40003FFF;Flash占據(jù)0x0~0x0003FFFF。此過程不受開發(fā)人員控制。 Memory Map是一個邏輯概念,是計算機系統(tǒng)在(上電)復位后才建立起來的。Memory Map相當于這樣一個數(shù)學函數(shù):函數(shù)的輸入量是地址編碼,輸出量被尋址單元中的數(shù)據(jù)。當計算機系統(tǒng)掉電后或復位時,這個數(shù)學函數(shù)不復存在,只剩下計算機系統(tǒng)中實現(xiàn)這個數(shù)學函數(shù)的物理基礎——電路連接。也可以這樣認為:Memory Map是計算機系統(tǒng)(上電)復位時的預備動作,是一個將CPU所擁有的地址編碼資源向系統(tǒng)內各個物理存儲器塊分配的自動過程。

            2.Remap(不受控制)Boot Block被整體Remap到了0x7fffe000~0x7fffffff。同時,0x0~0x3f的64字節(jié)中斷向量區(qū)被暫時注銷映射關系,由Boot Block中的中斷向量代替。此過程不受開發(fā)人員控制。此時地址空間分配: 除去Remap暫時注銷映射關系的64字節(jié),F(xiàn)lash整體占用0x40~0x3ffff?!oot Block占用0x7fffe000~0x7fffffff,Boot Block中斷向量表占用0x0~0x3f?!∈聦嵣?,Boot Block中斷向量表占用了三段地址編碼空間:0x0~0x3f,0x3e000~0x3e03f,0x7fffe000~0x7fffe03f。

            3.Boot(不受控制)復位后Boot運作就是從0x0處起始字中取出跳轉指令,開始程序的執(zhí)行。由于Boot Block中斷向量映射到0x0,CPU實際執(zhí)行的是Boot Block內的程序。然后,程序首先檢查看門狗溢出標志,置位表明系統(tǒng)內部軟復位。再檢查BOOT1和BOOT0是不是都為1,如果不是,則CPU從片外BANK0(0x80000000)執(zhí)行用戶代碼,如果BOOT1和BOOT0是都為1,則CPU將對內部Flash中的中斷向量表進行加和校驗,檢查用戶代碼是否有效,如果結果為0,Bootload程序將撤消Boot Block中斷向量表在0x0~0x3f地址空間的映射,恢復Flash中斷向量表在這64字節(jié)地址空間的映射,然后跳轉到地址0x00處轉入用戶程序的執(zhí)行。如果加和校驗結果不為0,Bootload程序將進行UART0接口的波特率自動偵測,隨時響應ISP宿主機的編程請求,執(zhí)行ISP編程工作。若Bootload沒有發(fā)現(xiàn)看門狗溢出標志置位,則表明當前系統(tǒng)是外部硬復位,CPU將采樣P0.14引腳外部邏輯電平輸入。如為0,Bootload執(zhí)行UART0的自動波特率偵測,隨時響應ISP宿主機的編程請求,執(zhí)行ISP編程工作;如為1,Bootload的后續(xù)運作將與前面檢測到看門狗溢出標志置位的程序執(zhí)行完全相同。 這部分復位流程具體可參見《ARM嵌入式基礎教程(上)》

            4.Remap(可以控制)Remap的對象是片內SRAM存儲器的異常向量部分。用戶可編程決定何時Remap,Remap后是否再修改中斷向量表等等。引發(fā)Remap運作指令與建立SRAM塊中異常向量的所有功能代碼全部駐留在Flash塊的用戶編程區(qū)中,是用戶軟件的一部分。另:此Remap對IAP操作有重要意義。 整個過程存儲器變化如下:1.Memory Map(不受控制)芯片上電復位后,CPU給各個物理存儲器塊分配地址編碼資源。這時不存在多個地址對應同一個物理內存的現(xiàn)象。2.Remap(不受控制)在執(zhí)行了Memory Map 后,Boot Block整體被Remap到了0x7fffe000~0x7fffffff,也就是將地址空間0x7fffe000~0x7fffffff用來表示Boot Block同一段物理內存。同時,0x0~0x3f的64字節(jié)中斷向量區(qū)被暫時注銷映射關系(因為在判斷用戶代碼存在于哪個存儲空間之前,能存放異常向量表的存儲空間有兩個,一個在片內flash的0x00-0x3f,另個在片內flash的頂端即bootblock區(qū),所以在同一時間,二者只能有一個起作用。),由Boot Block中的中斷向量代替。這時Boot Block中斷向量表占用了三段地址編碼空間:0x0~0x3f,0x3e000~0x3e03f,0x7fffe000~0x7fffe03f,即這三段地址編碼空間都指向bootblock中的中斷向量表。3與4同上所述。



            評論


            技術專區(qū)

            關閉