摘 要:系統(tǒng)引導(dǎo)是嵌入式系統(tǒng)開發(fā)過程中的一個重要環(huán)節(jié),其啟動速度是嵌入式系統(tǒng)一個重要指標(biāo)。對東南大學(xué)自主研發(fā)的SEP5010芯片的引導(dǎo)方案的研究,正是從提高啟動速度,縮短啟動時間方面來考慮的。從配置最優(yōu)分頻比、打開緩存(I-cache)、選擇下載協(xié)議、設(shè)計不同功能的啟動方式這4個方面對引導(dǎo)方案進行研究與優(yōu)化。實驗表明,通過以上優(yōu)化,系統(tǒng)啟動時間大大縮短,啟動速度平均要提高84.7%,滿足了嵌入式系統(tǒng)對快速啟動的要求。目前,該引導(dǎo)方案已經(jīng)成功應(yīng)用于一款手持導(dǎo)航設(shè)備。
關(guān)鍵詞:系統(tǒng)引導(dǎo);SEP5010;緩存;XMODEM
中圖分類號:TP302.1文獻標(biāo)識碼:B
文章編號:1004373X(2008)2200103
Research and Optimization of Booting Scheme Based on SEP5010 Chip
BAO Dan,SHI Jianlong,QI Longning,HU Chen
(National ASIC System Engineering Research Center,Southeast University,Nanjing,210096,China)
Abstract:System booting is an important aspect in real-time embedded system,of which booting speed is one of the most important indexes.As to the realization and optimization methods of the system booting scheme based on SEP5010 chip independently developed by Southeast University,this research mainly considers how to increase the booting speed and shorten the booting time.Through the research of configuring optimal frequency division ratio,opening I-cache,selecting downloading protocol and designing several booting schemes with different functions,the booting performance can be obviously increased.the optimization described above in the experiment which on real platform could improve the average booting time by 84.7%,which satisfies the demand of fast booting in embedded system.Presently,the booting scheme has been applied to a handheld navigation device.
Keywords:boot;SEP5010;cache;XMODEM
1 引 言
在嵌入式系統(tǒng)開發(fā)過程中的一個重要問題是如何開發(fā)系統(tǒng)啟動代碼,它是硬件和軟件的樞紐。對于嵌入式系統(tǒng),啟動代碼是基于特定硬件平臺來實現(xiàn)的。不同的處理器架構(gòu)都有不同的啟動代碼,它不但依賴于CPU 的體系結(jié)構(gòu),而且依賴于嵌入式系統(tǒng)板級設(shè)備的配置。 對于不同的嵌入式板而言,即使它們使用同一種處理器,啟動代碼也是不同的。由于啟動代碼的實現(xiàn)依賴于 CPU 的體系結(jié)構(gòu),因此大多數(shù)啟動代碼都分為 stage1 和 stage2 兩大部分。依賴于 CPU 體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在 stage1 中,而且通常都用匯編語言實現(xiàn),以達到短小精悍的目的。而 stage2 則通常用C語言來實現(xiàn),這樣可以實現(xiàn)更復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。本文實現(xiàn)并優(yōu)化的是基于東南大學(xué)自主研發(fā)的SEP5010芯片的stage1部分的啟動代碼,通過配置最優(yōu)分頻比,打開緩存(I-cache),選擇下載協(xié)議和設(shè)計不同功能的啟動方式這4個方面來對它進行優(yōu)化,縮短啟動時間,提高啟動速度,為下一階段鏡像的加載和執(zhí)行做好準(zhǔn)備。
2 硬件平臺與軟件平臺介紹
嵌入式系統(tǒng)是整個系統(tǒng)的核心,包括硬件平臺和軟件平臺。本文采用東南大學(xué)自主研發(fā)的SEP5010芯片,整體框架如圖1所示,其最高主頻達300 MHz,擴展了64 MB的SDRAM,2 M×32 b的Nor FLASH和64 M× 8 b的NAND FLASH,外圍資源豐富。本文所采用的開發(fā)平臺為基于SEP5010芯片的手持導(dǎo)航系統(tǒng)平臺,面向低成本手持設(shè)備,本開發(fā)平臺的系統(tǒng)框圖如圖2所示。
平臺軟件采用WinCE 5.0作為系統(tǒng)的操作系統(tǒng),它是一個功能強大的實時嵌入式操作系統(tǒng)??赏ㄟ^本文設(shè)計的啟動方案引導(dǎo)EBOOT程序,最終由EBOOT引導(dǎo)WinCE內(nèi)核。
3 啟動方案詳細(xì)介紹
如圖3所示,系統(tǒng)從外部Nor FLASH存儲器啟動。首先,對SEP5010芯片的時鐘與功耗管理模塊(PMC)進行相應(yīng)的配置。選擇內(nèi)核頻率,配置總線與內(nèi)核的分頻比,最后得到APB總線頻率。然后,對SEP5010芯片的外部存儲控制器(EMI)模塊進行配置,根據(jù)本開發(fā)板上所使用的SDRAM芯片型號(本開發(fā)板所使用的SDRAM型號為:W982516BH75L。其工作頻率小于133 MHz,行地址為13 b,列地址為9 b)配置其行列地址和時序參數(shù), 并且選通Nor FLASH。最后打開I-cache并跳轉(zhuǎn)到Main()主函數(shù)去執(zhí)行。進入Main() 函數(shù)后,首先初始化串口,配置波特率為115 200 b/s,配置接受和發(fā)送的數(shù)據(jù)結(jié)構(gòu)為:8個數(shù)據(jù)位,1個停止位,無奇偶校驗。其次初始化NAND FLASH,配置NAND FLASH芯片的時序(本開發(fā)板所使用的NAND型號為:K9F1208UOB,時序配置采用芯片手冊上的默認(rèn)配置)。然后通過檢測有無長按鍵進入不同的功能模塊:檢測到?jīng)]有長按鍵,進入直接引導(dǎo)模式,從NAND FLASH直接讀取鏡像到SDRAM中指定地址去執(zhí)行,反之,若檢查到有長按鍵,進入更新模式,通過菜單項選擇下載協(xié)議:標(biāo)準(zhǔn)XMODEM或1 k-XMODEM,下載鏡像到SDRAM中指定地址去執(zhí)行。最后從指定地址啟動鏡像。
4 啟動方案的性能優(yōu)化設(shè)計與分析
4.1 配置最優(yōu)的時鐘分頻比,提高代碼執(zhí)行速度,加快啟動速度
本文采用的SEP5010芯片,內(nèi)部集成ARM公司的ARM926EJ-S微處理器,它的最高主頻達到300 MHz。外部擴展了64 MB的SDRAM,其最高工作頻率為133 MHz。要想系統(tǒng)運行和處理速度達到最快,就必須使得主頻和總線頻率盡可能高,同時又要保證其運行性能的穩(wěn)定。因此,就需要選擇合適的內(nèi)核頻率,配置最優(yōu)的時鐘分頻比來達到最優(yōu)組合。由于分頻比寄存器只支持不分頻,2分頻,3分頻和4分頻4種分頻方式,因此分析3種方案如表1所示。
分析比較方案1和方案2,在SDRAM頻率不變的前提下,將主頻提高(此時主頻提高了1.5倍,已經(jīng)到達其300 MHz的極限值)一定會使運行速度提高,故方案2優(yōu)于方案1。
分析比較方案2和方案3,將SDRAM頻率提高到1.3倍,主頻降低到0.87倍,這時內(nèi)存頻率得到了較大幅度的提高(此時SDRAM的頻率幾乎已經(jīng)達到133 MHz的極限值),而內(nèi)核頻率的降低幅度很小,故方案3的啟動速度一定會優(yōu)于方案2。
4.2 打開I-cache,提高程序的運行速度,加快啟動速度
I-cache功能一般是在MMU開啟之后被使用的(為了降低MMU查表帶來的開銷),但并不是說MMU被開啟了I-cache才能被開啟,本啟動方案只是最簡單的硬件初始化,并不需要打開MMU,但是卻可以打開I-cache來加快啟動速度。
由于本方案從NOR啟動,本平臺采用的NOR芯片為16 b,而內(nèi)核為32 b,故CPU每次需從NOR讀取2次,才能完整讀取1條指令;而NOR的1個讀周期為70 ns,這樣如果直接從NOR讀取1條指令需要140 ns,CPU大量的時間都在等待,極大的降低了啟動速度。打開 I-cache后,CPU可以直接在I-cache中執(zhí)行指令,并直接從I-cache中返回,不需要從NOR中讀取,加快了執(zhí)行速度。
4.3 通過傳輸協(xié)議的優(yōu)化來加快鏡像下載速度
本方案的鏡像下載方式為串口下載,協(xié)議為XMODEM協(xié)議。XMODEM協(xié)議是一種異步文件運輸協(xié)議。標(biāo)準(zhǔn)XMODEM協(xié)議以128字節(jié)塊的形式傳輸數(shù)據(jù),并且每個塊都使用1個校驗和過程來進行錯誤檢測。如果接收方關(guān)于1個塊的校驗和與它在發(fā)送方的校驗和相同時,接收方就向發(fā)送方發(fā)送1個認(rèn)可字節(jié)(ACK),否則發(fā)送NAK。而1 k-XMODEM它以1 024 B一塊來傳輸數(shù)據(jù),提高了傳輸速率,同時增加了 CRC 校驗,用來提高傳輸?shù)目煽啃?。由此可見,采? k-XMODEM協(xié)議,每次傳輸?shù)臄?shù)據(jù)更多,可以加快鏡像的下載速度。
4.4 通過設(shè)計不同的啟動方案,滿足不同用戶的需求
方案一 當(dāng)系統(tǒng)啟動后,通過串口打印的菜單項選擇進入不同的模塊。選擇1為進入下載更新模塊,通過串口下載和更新鏡像;選擇2或者在設(shè)定的時間范圍(3 s)無按鍵,則進入直接引導(dǎo)模塊,從NAND FLASH中引導(dǎo)已存在的鏡像。
方案二 當(dāng)系統(tǒng)啟動后,通過是否有長按鍵的檢測,進入不同的功能模塊,即有長按鍵,進入更新模塊,通過串口,下載和更新鏡像;反之,沒有長按鍵,則進入直接引導(dǎo)模塊,從NAND FLASH中引導(dǎo)已存在的鏡像。
采用方案2的設(shè)計可以使得芯片的開發(fā)者與最終用戶的需求分開,既滿足了開發(fā)者調(diào)試的功能,又實現(xiàn)了最終用戶直接啟動的功能。故采用第二種方案。
5 實驗結(jié)果
(1) 在是否打開I-cache 情況下,分別配置不同的時鐘分頻比,比較和分析系統(tǒng)啟動時間,其實驗結(jié)果如表2所示:
本實驗采用不按長按鍵,直接從NAND讀取鏡像并運行的啟動方案來測量和比較不同方案的啟動時間的長短。其中燒寫到NAND中的鏡像為56.8 kB大小的eboot鏡像。系統(tǒng)啟動時間的計算方法為:通過利用本芯片中的Timer模塊的計時器功能,對啟動程序進行計時,時間為從進入主函數(shù)開始,直到從NAND讀取完鏡像并開始運行為止。
實驗結(jié)果證明,采用1∶2的分頻比,打開I-cache,并且將主頻設(shè)成260 MHz,APB總線頻率達到130 MHz的情況下,啟動時間最短。另外由實驗結(jié)果可見在相同頻率及分頻比配置的前提下,打開I-cache后的啟動時間比未打開I-cache的設(shè)計平均提高84.7%。由此可見盡可能地提高存儲總線頻率優(yōu)于單純提高內(nèi)核頻率的設(shè)計。
(2) 通過選擇不同的傳輸協(xié)議,比較和分析兩種方案的實驗結(jié)果如表3所示:
實驗結(jié)果證明選擇1 k-XMODEM下載鏡像的速度更快。
6 結(jié) 語
通過以上實驗結(jié)果可知,通過配置適當(dāng)?shù)膬?nèi)核頻率,選擇最優(yōu)的時鐘分頻比,并且打開I-cache可提高系統(tǒng)引導(dǎo)速度,縮短啟動時間;通過選擇1 k-XMODEM的傳輸協(xié)議可加快鏡像下載速度。另外,通過長按鍵的設(shè)計,使得芯片的開發(fā)者與最終用戶的需求分開,既滿足了開發(fā)者調(diào)試的功能,又實現(xiàn)了直接啟動的功能,縮短了啟動時間。通過以上4方面的優(yōu)化,系統(tǒng)啟動時間大大縮短,滿足了嵌入式系統(tǒng)快速啟動的要求。目前,該啟動方案已經(jīng)應(yīng)用于一款手持導(dǎo)航設(shè)備的開發(fā)中,并且對相關(guān)的嵌入式系統(tǒng)開發(fā)也具有一定的參考意義。
參 考 文 獻
[1]國家專用集成電路工程技術(shù)研究中心.SEP5010用戶手冊\\.2004.
[2]張冬泉.Windows CE實用開發(fā)技術(shù)\\.北京:電子工業(yè)出版社,2006.
[3]時龍興.嵌入式系統(tǒng)基于SEP3203微處理器的應(yīng)用開發(fā)\\.北京:電子工業(yè)出版社,2006.
[4]齊欣,張家棟,霍凱.ARM核微處理器Bootloader的分析與應(yīng)用\\.現(xiàn)代電子技術(shù),2006,29(11):2-4.
[5]王建,許毅平,周曼麗.ARM7嵌入式系統(tǒng)中Bootloader分析與設(shè)計\\.微計算機信息,2006,22(5):134-136.
[6]張建義,袁嫣紅,齊玲玲.ARM9啟動機制分析\\.浙江理工大學(xué)學(xué)報,2007,24(2):2-3.
[7]張宏財,趙曾貽.基于ARM核的Bootloader代碼的分析與設(shè)計\\.微計算機信息,2006,22(2):1-3.
[8]白浪,張思東.WinCE系統(tǒng)下BootLoader的開發(fā)\\.單片機及嵌入式系統(tǒng),2004(2):2-4.
[9]黃克彬,葉梧,馮穗力.基于ARM嵌入式開發(fā)的調(diào)試方案\\.計算機工程,2004,30(24):2-3.
[10]George M R,Wong W F.Windows CE for a Reconfigurable System-on-a-Chip Processor Field-Programmable Technology\\.IEEE International Conference,2004:201-207.
[11]劉婭.基于ARM嵌入式系統(tǒng)的Bootloader的設(shè)計與實現(xiàn)\\.現(xiàn)代電子技術(shù),2006,29(7):142-144.
作者簡介 鮑 丹 女,1981年出生,東南大學(xué)集成電路學(xué)院軟件工程專業(yè)工程碩士研究生。研究方向為嵌入式系統(tǒng)。
時建龍 男,1981年出生,東南大學(xué)集成電路學(xué)院軟件工程專業(yè)工程碩士研究生。研究方向為嵌入式系統(tǒng)設(shè)計。
戚隆寧 男,1979年出生,東南大學(xué)國家專用集成電路系統(tǒng)工程技術(shù)研究中心博士研究生。研究方向為嵌入式系統(tǒng)低功耗技術(shù)。
胡 晨 男,1967年出生,東南大學(xué)電子工程系教授。