資料介紹
??引言
??隨著半導體工藝技術與處理器設計技術的不斷提高,嵌入式處理器的速度愈來愈快;而非易失性存儲器的讀取速度卻遠遠跟不上CPU的發展。傳統的單片機運行模式——機器代碼存儲在非易失性存儲器(如ROM,FLASH),在運行時由CPU直接從其中取出指令執行——逐漸顯得力不從心。如果繼續沿用傳統的程序運行模式,那么在絕大多數時間內高速CPU將處于空閑等待狀態,這既浪費了CPU的計算能力,也無法實現高密度數據流的實時處理與傳輸。而在短期之內,半導體工業界尚無法實現低成本的非易失性高速存儲器技術。為了解決上述處理器和非易失性存儲器之間速度不匹配的矛盾,工程師們在嵌入式系統領域內引用了Boot技術和Remap技術。而要正確理解Boot技術和Remap技術,必須先建立Memory Map(存儲器映射)的概念。
??技術概念描述
??Memory Map
??計算機最重要的功能單元之一是Memory。Memory是眾多存儲單元的集合,為了使CPU準確地找到存儲有某個信息的存儲單元,必須為這些單元分配一個相互區別的“身份證號”,這個“身份證號”就是地址編碼。在嵌入式處理器內,集成了多種類型的Memory,通常,我們稱同一類型的Memory為一個Memory Block。一般情況下,處理器設計者會為每一個Memory Block分配一個數值連續、數目與其存儲單元數相等、以16進制表示的自然數集合作為該Memory Block的地址編碼。這種自然數集合與Memory Block的對應關系,就是Memory Map(存儲器映射),有時也叫Address Map(地址映射)。實際上,Address Map在字面意義上更加貼切。
??需要強調的是,Memory Map是一個邏輯概念,是計算機系統在(上電)復位后才建立起來的。Memory Map相當于這樣一個數學函數:函數的輸入量是地址編碼,輸出量被尋址單元中的數據。當計算機系統掉電后或復位時,這個數學函數不復存在,只剩下計算機系統中實現這個數學函數的物理基礎——電路連接。也可以這樣認為:Memory Map是計算機系統(上電)復位時的預備動作,是一個將CPU所擁有的地址編碼資源向系統內各個物理存儲器塊分配的自動過程。
??Boot/Bootload
??Boot在計算機專業英文中的意思是“引導”,它是計算機系統(上電)復位后CPU的第一個機器動作。那么,Boot引導的是什么呢?簡要地說,Boot就是引導CPU如何裝入機器指令。最簡單的Boot動作就是8位單片機系統復位后從復位向量中取出跳轉指令,轉移到用戶程序代碼段執行的這個過程。
??通常,在計算機系統中,(上電)復位后除了執行Boot動作,還跟隨著一個Load過程。一般情況下,該Load從低速非易失性存儲器中“搬運”一些數據到高速易失性存儲器中。Boot和Load連續執行,一氣呵成,我們稱之為Bootload。最典型的例子之一就是DSP實時信號處理系統,系統上電后,將存儲在EEPROM中的實時信號處理程序復制到系統的RAM中,然后CPU直接從RAM中讀取機器指令運行。
??Remap
??Remap與計算機的異常處理機制是緊密相關的。
??完整的計算機系統必須具備異常處理能力。當異常產生時,CPU在硬件驅動機制下跳轉到預先設定的存儲器單元中,取出相應的異常處理程序的入口地址, 并根據該入口地址進入異常處理程序。這個保存有異常處理程序入口地址的存儲器單元就是通常所說的“異常入口”,單片機系統中也叫“中斷入口”。實際的計算機系統有多種類型的異常,CPU設計人員為了簡化芯片設計,一般將所有的異常入口集中起來置于非易失性存儲器中,并在系統上電時映射到一個固定的連續地址空間上。位于這個地址空間上的異常入口集合就是“異常向量表”。
??系統上電后的異常向量表是從低速非易失性存儲器映射得到的。隨著處理器速度的不斷提高,很自然地,人們希望計算機系統在異常處理時也充分發揮出CPU的處理能力,而非易失性存儲器的讀取速度使得CPU只能以多個空閑等待同期來獲取異常向量,這樣就限制了CPU計算能力的充分發揮。尤其是非易失性存儲器位寬小于CPU位寬時,這種負面的影響更加明顯。于是,Remap技術被引入,以提高系統對異常的實時響應能力。
??從Remap這個英文單詞的構成不難看出,它是對此前已確立的存儲器映射的再次修改。從本質上講,Map和Remap是一樣的,都是將地址編碼資源分配給存儲器塊,只不過二者產生的時間不同:前者在系統上電的時刻發生,是任何計算機系統都必需的;而后者在系統上電后穩定運行的時刻發生,對計算機系統設計人員來說是可選的。典型的8位單片機系統中,就沒有使用Remap技術。
??完整的Remap過程實際上通常始于系統的Bootload過程。具體執行動作為:Bootload將非易失性存儲器中的異常向量復制到高速易失性存儲器塊的一端,然后執行Remap命令,將位于高速易失性存儲器中的異常向量塊映射到異常向量表地址空間上。此后,系統若產生異常,CPU將從已映射到異常微量表地址空間的高速非易失性存儲器中讀取異常向量。具體到典型的ARM7嵌入式系統中,就是由Bootload程序將片內或片外的Flash/ROM中的異常向量復制到片內的SRAM中指定的存在器單元中,然后再執行Remap命令。由于片內的SRAM數據位寬通常與CPU數據位寬相等,因而CPU可以無等待地全速跳入異常處理程序,獲得最佳的實時異常響應。
??LPC2000的Boot和Remap解析
??從上面的技術描述中可知,典型的Boot、Memory Map和Remap的時間順序應該是:Memory Map-〉Boot-〉Remap。但是,LPC2000處理器中這三個動作的順序卻有一點不同,依次為Memory Map-〉Remap-〉Boot-〉Remap,最后一個Remap過程是用戶可選的,可執行也可不執行。每當系統復位以后,LPC2000處理器就順次執行上述四個過程,下面分析這幾個階段。為簡化起見,以總線不開放的LPC2104處理器為例。
??LPC2106的片上存儲器分類
??LPC2104片內的存儲器類型只有兩種:Flash塊和SRAM塊。其中,部分Flash存儲器塊在芯片出廠前由Philips寫入了Bootload程序和64字節的異常向量表。為方便討論,我們稱這部分Flash塊為Bootload子塊,其大小為8KB。如前所述,在處理器未上電之前或復位時,Flash塊和SRAM塊僅僅是兩個沒有地址編碼的物理存儲器,與地址編碼尚未建立起實際的映射關系。
??Memory Map
??LPC2104處理器(上電)復位以后,Flash塊和SRAM塊的地址映射結果為:SRAM占據0x40000000—0x40003FFF范圍的地址編碼空間;Flash占據0x00000000—0x0001FFFF范圍的地址編碼空間。該映射結果是個中間態,只存在極短的時間,應用系統開發人員無法看到這個中間態。處理器內核外圍模塊的地址映射結果為0xE0000000—0xFFFFFFFF。
??
??Remap
??Memory Map完成以后,緊接著LPC2104會作一次Remap,這次Remap操作的對象是Bootload子塊,由處理的內部硬件邏輯執行完成,不受開發人員的控制。經過Remap后,Bootload子塊被整體Remap到了0x7FFFE000—0x7FFFFFFF的片內高地址內存空間;同時,原Memory Map后占用0x00000000—0x0000003F地址空間的那部分64 字節大小的Flash子塊被暫時注銷映射關系,由Bootload子塊中的異常向量部分取而代之。
??至此,Flash塊對內存地址空間的占用情況如下:
??1、除去因Remap被暫時注銷了映射關系的那小部分64字節的Flash子塊外,Flash塊作為一個整體占用的地址編碼空間為0x00000040—0x0001FFFF;
??2、同時,Bootload子塊又占用了0x7FFFE000—0x7FFFFFF的地址編碼空間,Bootload子塊中的異常向量表部分占用了0x00000000—0x0000003F。
??因此,Bootload子塊中的異常向量表部分實際上是占用了重復占用了三段地址編碼空間:0x00000000—0x0000003F、0x0001E000—0x0001E03F以及0x7FFFE000—0x7FFFE03F。
??圖2中,存儲器的映射順序為:Memory Map-〉Reset Remap-〉Bootload Remap。
??SRAM塊和內核外圍模塊的映射關系在Remap之后保持不變,可參見圖1。
??* - 本貼最后修改時間:2005-3-10 17:31:19 修改者:andrewpei
??* - 修改原因:Append
??
??Boot
??LPC2104有效的異常向量表地址編碼空間是0x00000000—0x0000003F(嚴格來說應該是0x00000000—0x0000001F)。處理器復位后的Boot動作就是從0x00000000處起始字中取出跳轉指令,開始程序的執行。由于處理器復位后,映射到0x00000000—0x0000003F地址空間的異常向量表源于Bootload子塊,因此CPU實際上開始執行的是Philips在芯片出廠前寫入的Bootload程序。
??進入Bootload后,程序首先檢查看門狗溢出標志是否置位。
??若看門狗溢出標志置位,則表明當前的系統復位是內部軟復位,CPU下一步將對Flash塊中的異常向量表進行加和校驗。如果加和檢驗結果為零,Bootload程序將撤銷Bootload子塊中異常向量表部分在0x00000000—0x00000003F地址空間上的映射,恢復Flash塊的異常向量表在這64字節地址空間上的映射關系(如圖3),然后跳轉到異常向量表地址0x00000000處轉入用戶程序的執行。如果加和校驗結果不為零,Bootload程序將進行UART0接口的波特率自動偵測,隨時響應ISP宿主機的編程請求,執行處理器芯片的ISP編程工作。
??
??若Bootload沒有發現看門狗溢出標志置位,則表明當前的系統復位是外部硬復位,CPU將采樣P0.14引腳的外部邏輯電平輸入。如果為0,Bootload執行UART0的自動波特率偵測,隨時響應ISP宿主機的編程請求;如果為1,Bootload的后續動作將與前面檢測到看門狗溢出標志置位的程序執行完全相同。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 學習Spring Boot 嵌入式服務器
- (網盤)ARM嵌入式Linux系統開發詳解
- 嵌入式詳解
- 深度:嵌入式系統的軟件架構設計!資料下載
- 嵌入式實時系統資料下載
- 嵌入式系統設計與物聯網開發資料下載
- 嵌入式系統與人工智能資料下載
- 嵌入式不同硬件的不同特點資料下載
- 長文詳解嵌入式Linux系統移植資料下載
- Lonworks總線的嵌入式智能節點的設計資料下載
- ARM處理器的嵌入式系統的Boot與Remap的詳細資料說明 9次下載
- 嵌入式Linux開發教程之嵌入式系統介紹資料免費下載
- 嵌入式系統Boot Loader技術的詳細內幕資料免費下載 8次下載
- 詳解嵌入式linux 啟動信息 11次下載
- LPC2104的Boot與Remap詳解 0次下載
- 什么是嵌入式系統?嵌入式系統的具體應用 2096次閱讀
- 基于優先級調度的嵌入式實時操作系統內核詳解(下) 754次閱讀
- 在Zynq裸機設計中使用視覺庫L1 remap函數的示例 567次閱讀
- 嵌入式系統應用實例的詳細資料介紹 4604次閱讀
- 嵌入式Linux引導以及U-Boot移植深度分析 1941次閱讀
- 基于嵌入式系統的Boot Loader設計概述 1269次閱讀
- 嵌入式FIFO數據傳輸系統詳解 4141次閱讀
- 基于Blackfin嵌入式系統硬件平臺的數碼相框設計詳解 1265次閱讀
- 基于Qtopia的嵌入式俄文環境詳解 1290次閱讀
- 嵌入式應用框架EAF詳解 2699次閱讀
- 關于嵌入式系統以及嵌入式平臺下的學科分工詳解 1855次閱讀
- 基于SoPC的嵌入式硬件平臺系統設計詳解 1891次閱讀
- 關于嵌入式系統8大關鍵特性詳解 1059次閱讀
- 嵌入式系統有哪些部分組成_嵌入式系統的應用領域 3.3w次閱讀
- ARM嵌入式系統硬件設計及應用實例詳解 1w次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1489次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 91次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 9次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7基于單片機和 SG3525的程控開關電源設計
- 0.23 MB | 3次下載 | 免費
- 8基于單片機的紅外風扇遙控
- 0.23 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30319次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多