《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 適于OMAP的多級啟動Boot Loader
適于OMAP的多級啟動Boot Loader
黃建堯,劉開華,李 琨
(天津大學 電子信息工程學院,天津 300072)
摘要: 通過對OMAP啟動方式的分析,針對OMAP需要從外部Flash啟動、耗時大、風險高的缺點,提出了一種多級啟動的Boot Loader設計方案。該方案通過兩級啟動,在RAM中運行Boot Loader,降低了代碼運行的風險,減小了Boot過程的耗時。實驗證明,使用該方法拷貝程序的耗時能夠減少20%左右。
Abstract:
Key words :

摘  要: 通過對title="OMAP">OMAP啟動方式的分析,針對OMAP需要從外部Flash啟動、耗時大、風險高的缺點,提出了一種多級啟動Boot Loader設計方案。該方案通過兩級啟動,在RAM中運行Boot Loader,降低了代碼運行的風險,減小了Boot過程的耗時。實驗證明,使用該方法拷貝程序的耗時能夠減少20%左右。
關鍵詞:Boot Loader;OMAP;多級啟動

    開放式多媒體應用平臺(OMAP)是TI公司推出的,適用于下一代嵌入式終端設計的高集成度雙核心處理器。它將一顆善于進行數據處理的DSP內核與一顆控制性能很強的ARM內核集成在一個芯片中,既改進了普通DSP處理器缺乏外部控制能力的缺點,也彌補了普通ARM處理器無法進行大運算量數據處理的不足。與單核心處理器相比,OMAP雙核結構處理器能夠完成以前需要兩顆處理器才能完成的工作,可以得到更低的系統功耗與成本,因而廣泛應用于嵌入式終端中。
    Boot Loader是嵌入式系統的重要組成部分,它是在操作系統啟動之前運行的初始化加載程序,用于設置操作系統運行的硬件環境并將Flash中存儲的操作系統加載到RAM中運行。
1 OMAP的啟動方式
 OMAP多采用外部Flash啟動方式。以OMAP5910為例,它包含一顆TMS320C55x DSP核心以及一顆ARM925核心,其中MPU(ARM925)為主控核心,它可以控制DSP內核的啟動、復位等操作。OMAP5910上電時,MPU首先啟動,從地址0x00000000開始讀取指令,運行程序。一般應在0x00000000地址處放置一條跳轉指令,令其指向Boot Loader啟動程序的入口處,OMAP5910啟動后跳轉至Boot Loader程序處執行硬件環境設置及操作系統加載工作。根據OMAP5910的地址空間映射關系[1],0x00000000地址屬于EMIFS(慢速片外存儲器接口)總線,CS0空間,用于連接外部Flash,因而OMAP5910的啟動階段的程序在外部Flash中進行取指操作。
 在實際應用中發現,如果操作系統占用空間比較大,使得Boot Loader需要從Flash中拷貝的代碼量很大,那么系統的啟動過程會耗費較長的時間。由于MPU需要在Flash中取指,又要將同一空間中其他部分的數據搬移到不同的RAM(DSP運行的內部SRAM以及MPU運行的SDRAM)中,從而使得程序取指錯誤的概率增加。經過測試發現,隨著Flash擦寫次數的增多,Flash性能下降,這種錯誤的概率會顯著增加。這種錯誤體現到應用中,就會造成整個系統在啟動過程中偶爾出現莫明其妙的死機,只能通過斷電重新啟動才能解決,因而這種啟動方式存在較大的隱患。
2 多級啟動Boot Loader
2.1 設計思想

   考慮到啟動過程中MPU需要從Flash中取指,這種操作既有風險且取指周期又長,因而應盡量減少在Flash中的取指動作。而RAM作為高速存取設備,其讀寫周期比Flash要短得多,因而將代碼拷貝過程中的指令放到RAM中進行取指操作,既能降低取指周期,又能降低載入系統時的風險。通過上述分析,可以設計一種多級載入的BOOT過程,首先用一段盡量短的程序將傳統意義上的Boot Loader拷貝到一段空白(載入操作系統時不會占用)的RAM中,之后再跳轉到RAM中的Boot Loader程序入口,執行真正的Boot Loader程序。與操作系統相比,Boot Loader程序代碼要短得多,拷貝時間基本可以忽略,因而運行風險也小很多。這段程序在Flash中運行,任務是拷貝Boot Loader程序,可以稱之為Mini Loader。
2.2 具體過程
   多級Boot Loader啟動過程分為Mini Loader、System Loader以及Flasher 3個部分。
   (1) Mini Loader
   Mini Loader在Flash中運行,其目的是從Flash中將Boot Loader程序拷貝到RAM中。為了盡量減小Flash中運行程序的數量就需要Mini Loader盡量短小,故而Mini Loader在進行拷貝動作之前只需要配置與外部總線EMIFS、EMIFF相關的寄存器。具體流程如圖1所示。同時還要注意需要設置MPU的中斷向量表0x00000000的跳轉地址為Mini Loader的程序入口。


    (2) System Loader
    該部分為傳統意義上的Boot Loader過程,完成硬件環境相關設置及初始化,并將操作系統載入到RAM中運行。需要注意的是,MPU本身的中斷向量表須載入到內部SRAM中,其他操作系統部分可以載入到外部SDRAM中。
 由于OMAP平臺為雙核心結構,因此 System Loader除了需要載入MPU系統本身之外,還需要配置DSP的載入及啟動過程。DSP有3種啟動方法:Flash引導方式與ARM載入方式,參考文獻[2]對這兩種方式進行了對比分析。本設計采用ARM載入方式,這樣可以通過ARM動態配置DSP部分的代碼,控制DSP核心的處理流程。與參考文獻[2]所不同的是,本方法中DSP程序采用與MPU操作系統相同的方式存儲,也存入Flash中,而不是作為常量數組編入Boot Loader程序中,這種方式較參考文獻[2]中的方法更加便于管理,單獨對DSP程序進行升級也更加方便,而且減小了System Loader的程序長度,更有利于多級啟動方式。
 因為OMAP本身的GPIO(MUPIO)有限,所以大多設計都要采用FPGA作為外圍擴展控制器,用來擴展更多的控制端口以及通信端口。一般FPGA本身無法存儲程序,其程序存儲在片外ROM中,FPGA上電之后可以通過多種方式自行加載到ROM中運行。本設計通過MPU加載FPGA程序,并將FPGA固件程序也存儲于同一Flash中,這樣省去了一片FPGA專用ROM,既方便代碼管理,又降低了硬件成本和設計復雜度。以XILINX公司的XC2S系列FPGA為例,其加載程序時可采用串行加載模式,選擇FPGA為從模式,將OMAP本身的MCBSP配置為SPI主模式,工作于時鐘停止模式,包含一個時鐘周期延時,輸出時鐘信號高有效,采用幀同步模式,每個數據幀8 bit。給FPGA載入程序時,要將存儲于Flash中的FPGA程序代碼讀出,由于XILINX開發工具ISE輸出的HEX文件以字節(8 bit)為單位,而Flash中存儲的內容以雙字(32 bit)為單位(由ARM指令長度而定),因而從Flash中讀出32 bit的數據之后需要按照從高到低的字節順序發送。而且,ISE的HEX文件每字節bit排列順序與MCBSP的傳輸順序正好相反,因此每個字節內部需要將bit反向重排。
 System Loader流程如圖2所示,啟動順序與本小節所述順序正好相反,這是因為FPGA一般多用于進行硬件設備的控制,所以需要最先啟動;而DSP由于其自身特點,多用于數據處理工作,作為MPU的協處理器使用,因此需要在MPU操作系統啟動之前做好準備。

   (3)Flasher
 Flasher過程主要負責向Flash中燒寫編譯好的程序目標碼,主要包括Boot Loader、MPU、DSP、FPGA等部分。采用RS232串行端口與主機相連,實現程序目標碼的下載。傳輸協議采用大多數編譯器都支持的Intel Hex格式[5]。Intel Hex格式采用ASCII字符表示方式,這樣程序目標碼的每個字節需要用2個ASCII字符來表示,包含冗余信息較大,而且Intel Hex格式僅含目標碼的地址信息與具體內容,而無法區分目標碼的類別,因而需要對Intel Hex進行擴展,以降低冗余并支持更多的操作。擴展的Hex不使用ASCII字符,而直接使用原數據格式,這樣可以降低一半數據量。為了與Intel Hex格式有所區分,采用“;”作為前綴標識,格式如表1所示。同時對數據類型進一步擴展,用以區分各種目標碼類別,如表2所示。

   可以看出,表2中僅包括擦除各種類型目標碼的指令,而沒有包含寫入目標碼時區分類別的具體指令,這是因為寫入時各種不同類型的目標碼可以直接通過地址來區分,每種類型目標碼都有自己單獨的地址段,相互之間沒有交叉。Flasher流程如圖3所示,通過解析Hex記錄格式,來判斷命令類型,從而進行相應的操作。其中校驗模式用于驗證Flash中所存儲的程序代碼是否與串行端口上收到的數據一致。所有程序更新結束之后,通過重新啟動命令復位OMAP芯片,使整個系統重新啟動。   

      
3 拷貝程序耗時對比測試
   采用Intel公司RD48F3000P0ZBQ0 Flash存儲器以及三星K4M56163PG移動版SDRAM與OMAP5910相連,組成OMAP5910運行所需的最小系統,OMAP運行頻率144 MHz。分別采用傳統啟動方式(程序在Flash中運行)以及本文所述的啟動方式(程序在RAM中運行)從Flash中拷貝相同長度的數據到SDRAM中,測試其耗時。每次拷貝數據量選取64 KB~8 192 KB,每種數據量每種方式測試5次,具體時間如表3所示,其中表3(a)為程序在RAM中運行時的耗時,表3(b)為程序在Flash中運行時的耗時。由表中數據對比可以看出,拷貝數據量較大時,本文中所述的RAM拷貝方式優勢比較明顯,有大約20%的提高,對于目前的嵌入式操作系統來說,基本內核的代碼量都比較大,因而采用本文所述的方式能夠帶來比較大的耗時改善。

 OMAP作為一種整合了ARM控制能力與DSP數據處理能力的雙核心處理器已經廣泛應用于各種嵌入式設備中,但大多數OMAP處理器通過外部Flash啟動,既浪費時間又有較高風險。本文針對OMAP啟動過程中的這一缺陷,設計的多級啟動Boot Loader較之傳統方式有較大的性能改善,目前已在數字集群手持終端、網絡多媒體可視電話等項目中得到成功應用,并取得很好的效果。
  
參考文獻
[1] Texas Instruments OMAP5910 dual-core processor technical reference manual. 2003.
[2] 呂喜在,蘇紹 ,黃飛,等,開放式多媒體應用平臺OMAP5910雙核程序裝載方法[J]. 微計算機信息,2005,21(9-2):94-95.
[3] 李興紅.基于OMAP的嵌入式系統開發[J].數據采集與處理,2008,23:181-184.
[4] 李毅,李連云,張偉宏等.Bootloader面向不同結構Flash的實現[J].計算機工程,2008,34(4):82-86.
[5] Intel  Corporation. . Intel hexadecimal object file format specification revision A. 1988.
[6] 張石,常皓,佘黎煌,等. 基于OMAP5910的移動媒體播放機設計[J]. 電子技術應用,2007,33(2):27-29.
 

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲午夜羞羞片| 欧美一区二区三区免费在线看 | 亚洲欧美一级二级三级| 亚洲大片一区二区三区| 午夜精品久久久久久久久久久久| 国产精品久久久久一区二区三区共 | 亚洲国产二区| 欧美影院成人| 久久经典综合| 香蕉久久国产| 先锋影音网一区二区| 亚洲欧美三级在线| 亚洲欧美视频在线观看视频| 亚洲一区二区视频在线| 亚洲欧美日韩国产一区| 亚洲欧美日韩国产综合精品二区| 亚洲二区在线| 精品999在线播放| 在线观看视频一区二区欧美日韩| 欧美午夜电影网| 欧美日韩1区2区| 欧美啪啪一区| 欧美色图五月天| 国产精品美女久久久浪潮软件| 能在线观看的日韩av| 免费不卡在线视频| 裸体丰满少妇做受久久99精品| 亚洲伊人伊色伊影伊综合网| 一本久道综合久久精品| 亚洲午夜在线观看| 午夜亚洲伦理| 久久精品免视看| 蜜臀av一级做a爰片久久| 女人天堂亚洲aⅴ在线观看| 欧美大片18| 欧美日一区二区在线观看| 国产精品久久久久久久久免费桃花| 欧美aaaaaaaa牛牛影院| 欧美大色视频| 欧美午夜精品久久久久久浪潮 | 午夜国产精品影院在线观看| 亚洲欧美日韩系列| 欧美一级久久| 日韩亚洲精品在线| 亚洲欧美国产精品桃花| 久久精品日韩| 欧美—级高清免费播放| 国产精品乱看| 在线观看亚洲视频| 一区二区三区高清不卡| 午夜一区二区三区不卡视频| 亚洲第一精品影视| 在线一区二区三区做爰视频网站 | 欧美亚洲综合另类| 久久人人爽人人爽爽久久| 欧美sm极限捆绑bd| 欧美视频在线观看一区| 国产性色一区二区| 亚洲日本理论电影| 亚洲尤物精选| 亚洲精品久久久久久一区二区| 亚洲激情在线观看视频免费| 一区二区三区日韩精品视频| 欧美一区激情视频在线观看| 欧美成人69av| 国产乱码精品一区二区三区五月婷 | 国产一区二区三区免费不卡| 亚洲激情国产精品| 午夜精品一区二区三区四区| 亚洲三级影院| 久久狠狠久久综合桃花| 欧美伦理91| 狠狠综合久久av一区二区小说| 国产一区二区毛片| 亚洲经典视频在线观看| 亚洲欧美视频| 一区二区三区日韩精品| 玖玖国产精品视频| 欧美四级剧情无删版影片| 很黄很黄激情成人| 中文精品99久久国产香蕉| 亚洲国产综合视频在线观看| 亚洲欧美日韩天堂一区二区| 欧美韩国在线| 国产尤物精品| 亚洲在线电影| 亚洲视频每日更新| 欧美大片免费观看在线观看网站推荐| 欧美国产日韩免费| 国产毛片一区| 宅男噜噜噜66一区二区| 亚洲精品资源| 蜜臀99久久精品久久久久久软件| 欧美精品自拍| 国外成人网址| 亚洲欧美日韩系列| 亚洲欧美激情视频在线观看一区二区三区 | 欧美日本精品| 在线看无码的免费网站| 欧美一区二区三区啪啪| 午夜精品久久久久久久99水蜜桃| 欧美一区二区视频网站| 欧美日韩亚洲网| 亚洲国产日韩一级| 亚洲第一搞黄网站| 久久精品在线免费观看| 国产精品一香蕉国产线看观看| 狠狠色噜噜狠狠色综合久| 一区二区冒白浆视频| aa级大片欧美三级| 欧美国产精品劲爆| 在线观看日韩av| 亚洲国产经典视频| 久久亚洲影音av资源网| 国产一区亚洲| 午夜宅男久久久| 欧美一区二区精品| 国产精品有限公司| 亚洲欧美激情视频| 欧美一区二区三区免费观看视频| 欧美mv日韩mv国产网站app| 韩日欧美一区二区三区| 欧美与欧洲交xxxx免费观看| 久久精品国产一区二区三区免费看 | 暖暖成人免费视频| 激情综合在线| 91久久中文字幕| 欧美电影免费观看高清| 亚洲三级免费| 亚洲午夜精品国产| 国产精品乱码一区二三区小蝌蚪| 亚洲国产成人精品女人久久久| 99在线热播精品免费99热| 一本大道av伊人久久综合| 欧美日韩一区二区在线播放| 一区二区三区免费观看| 亚洲女人天堂成人av在线| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 亚洲一区二区3| 欧美视频在线播放| 亚洲一区影音先锋| 欧美在线视频免费播放| 国产在线视频不卡二| 久久精品日产第一区二区三区| 亚洲伊人一本大道中文字幕| 欧美性猛交99久久久久99按摩| 亚洲大片在线观看| 亚洲精品国精品久久99热一| 欧美人成在线| 一区二区三区www| 欧美一区二区在线免费播放| 韩国女主播一区| 亚洲欧洲日本国产| 欧美日韩精品一区二区天天拍小说 | 久久精品亚洲一区| 久热精品在线视频| 亚洲人午夜精品免费| 亚洲免费网站| 韩日欧美一区二区| 99国产精品视频免费观看| 欧美午夜电影网| 欧美与黑人午夜性猛交久久久| 午夜精品久久久久久久白皮肤| 欧美啪啪成人vr| 亚洲婷婷综合色高清在线| 欧美一级网站| 亚洲国产精品一区二区www在线| 久久爱www.| 欧美精品一区二区三区一线天视频| 精品999成人| 在线视频你懂得一区二区三区| 欧美大片免费久久精品三p| 日韩一级大片| 久久精品99无色码中文字幕| 伊人狠狠色j香婷婷综合| 中文国产一区| 狠狠久久五月精品中文字幕| 一本色道久久88精品综合| 国产日韩欧美一二三区| 亚洲日本成人女熟在线观看| 国产精品女人网站| 欧美国产一区视频在线观看| 亚洲影院免费观看| 欧美专区亚洲专区| 亚洲国产一区二区在线| 午夜精品久久久久| 亚洲欧洲日本一区二区三区| 欧美一区二区三区四区高清 | 亚洲国产成人av在线| 亚洲欧美日韩国产成人精品影院| 欧美日韩精品二区第二页| 欧美一区二区精品| 欧美日韩在线精品| 久久精品成人| 国产精品成人免费| 日韩午夜电影在线观看| 国产亚洲激情在线| 亚洲伊人网站| 91久久国产综合久久蜜月精品| 亚洲精品美女在线观看播放|