當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]通過對(duì)OMAP啟動(dòng)方式的分析,針對(duì)OMAP需要從外部Flash啟動(dòng)、耗時(shí)大、風(fēng)險(xiǎn)高的缺點(diǎn),提出了一種多級(jí)啟動(dòng)的Boot Loader設(shè)計(jì)方案。該方案通過兩級(jí)啟動(dòng),在RAM中運(yùn)行Boot Loader,降低了代碼運(yùn)行的風(fēng)險(xiǎn),減小了Boot過程的耗時(shí)。實(shí)驗(yàn)證明,使用該方法拷貝程序的耗時(shí)能夠減少20%左右。

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

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


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

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

   可以看出,表2中僅包括擦除各種類型目標(biāo)碼的指令,而沒有包含寫入目標(biāo)碼時(shí)區(qū)分類別的具體指令,這是因?yàn)閷懭霑r(shí)各種不同類型的目標(biāo)碼可以直接通過地址來區(qū)分,每種類型目標(biāo)碼都有自己單獨(dú)的地址段,相互之間沒有交叉。Flasher流程如圖3所示,通過解析Hex記錄格式,來判斷命令類型,從而進(jìn)行相應(yīng)的操作。其中校驗(yàn)?zāi)J接糜隍?yàn)證Flash中所存儲(chǔ)的程序代碼是否與串行端口上收到的數(shù)據(jù)一致。所有程序更新結(jié)束之后,通過重新啟動(dòng)命令復(fù)位OMAP芯片,使整個(gè)系統(tǒng)重新啟動(dòng)。   

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

 OMAP作為一種整合了ARM控制能力與DSP數(shù)據(jù)處理能力的雙核心處理器已經(jīng)廣泛應(yīng)用于各種嵌入式設(shè)備中,但大多數(shù)OMAP處理器通過外部Flash啟動(dòng),既浪費(fèi)時(shí)間又有較高風(fēng)險(xiǎn)。本文針對(duì)OMAP啟動(dòng)過程中的這一缺陷,設(shè)計(jì)的多級(jí)啟動(dòng)Boot Loader較之傳統(tǒng)方式有較大的性能改善,目前已在數(shù)字集群手持終端、網(wǎng)絡(luò)多媒體可視電話等項(xiàng)目中得到成功應(yīng)用,并取得很好的效果。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉