摘 要:系統引導是嵌入式系統開發過程中的一個重要環節,其啟動速度是嵌入式系統一個重要指標。對東南大學自主研發的SEP5010芯片的引導方案的研究,正是從提高啟動速度,縮短啟動時間方面來考慮的。從配置最優分頻比、打開緩存(I-cache)、選擇下載協議、設計不同功能的啟動方式這4個方面對引導方案進行研究與優化。實驗表明,通過以上優化,系統啟動時間大大縮短,啟動速度平均要提高84.7%,滿足了嵌入式系統對快速啟動的要求。目前,該引導方案已經成功應用于一款手持導航設備。
關鍵詞:系統引導;SEP5010;緩存;XMODEM
中圖分類號:TP302.1文獻標識碼: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 引 言
在嵌入式系統開發過程中的一個重要問題是如何開發系統啟動代碼,它是硬件和軟件的樞紐。對于嵌入式系統,啟動代碼是基于特定硬件平臺來實現的。不同的處理器架構都有不同的啟動代碼,它不但依賴于CPU 的體系結構,而且依賴于嵌入式系統板級設備的配置。 對于不同的嵌入式板而言,即使它們使用同一種處理器,啟動代碼也是不同的。由于啟動代碼的實現依賴于 CPU 的體系結構,因此大多數啟動代碼都分為 stage1 和 stage2 兩大部分。依賴于 CPU 體系結構的代碼,比如設備初始化代碼等,通常都放在 stage1 中,而且通常都用匯編語言實現,以達到短小精悍的目的。而 stage2 則通常用C語言來實現,這樣可以實現更復雜的功能,而且代碼會具有更好的可讀性和可移植性。本文實現并優化的是基于東南大學自主研發的SEP5010芯片的stage1部分的啟動代碼,通過配置最優分頻比,打開緩存(I-cache),選擇下載協議和設計不同功能的啟動方式這4個方面來對它進行優化,縮短啟動時間,提高啟動速度,為下一階段鏡像的加載和執行做好準備。
2 硬件平臺與軟件平臺介紹
嵌入式系統是整個系統的核心,包括硬件平臺和軟件平臺。本文采用東南大學自主研發的SEP5010芯片,整體框架如圖1所示,其最高主頻達300 MHz,擴展了64 MB的SDRAM,2 M×32 b的Nor FLASH和64 M× 8 b的NAND FLASH,外圍資源豐富。本文所采用的開發平臺為基于SEP5010芯片的手持導航系統平臺,面向低成本手持設備,本開發平臺的系統框圖如圖2所示。
平臺軟件采用WinCE 5.0作為系統的操作系統,它是一個功能強大的實時嵌入式操作系統。可通過本文設計的啟動方案引導EBOOT程序,最終由EBOOT引導WinCE內核。
3 啟動方案詳細介紹
如圖3所示,系統從外部Nor FLASH存儲器啟動。首先,對SEP5010芯片的時鐘與功耗管理模塊(PMC)進行相應的配置。選擇內核頻率,配置總線與內核的分頻比,最后得到APB總線頻率。然后,對SEP5010芯片的外部存儲控制器(EMI)模塊進行配置,根據本開發板上所使用的SDRAM芯片型號(本開發板所使用的SDRAM型號為:W982516BH75L。其工作頻率小于133 MHz,行地址為13 b,列地址為9 b)配置其行列地址和時序參數, 并且選通Nor FLASH。最后打開I-cache并跳轉到Main()主函數去執行。進入Main() 函數后,首先初始化串口,配置波特率為115 200 b/s,配置接受和發送的數據結構為:8個數據位,1個停止位,無奇偶校驗。其次初始化NAND FLASH,配置NAND FLASH芯片的時序(本開發板所使用的NAND型號為:K9F1208UOB,時序配置采用芯片手冊上的默認配置)。然后通過檢測有無長按鍵進入不同的功能模塊:檢測到沒有長按鍵,進入直接引導模式,從NAND FLASH直接讀取鏡像到SDRAM中指定地址去執行,反之,若檢查到有長按鍵,進入更新模式,通過菜單項選擇下載協議:標準XMODEM或1 k-XMODEM,下載鏡像到SDRAM中指定地址去執行。最后從指定地址啟動鏡像。

4 啟動方案的性能優化設計與分析
4.1 配置最優的時鐘分頻比,提高代碼執行速度,加快啟動速度
本文采用的SEP5010芯片,內部集成ARM公司的ARM926EJ-S微處理器,它的最高主頻達到300 MHz。外部擴展了64 MB的SDRAM,其最高工作頻率為133 MHz。要想系統運行和處理速度達到最快,就必須使得主頻和總線頻率盡可能高,同時又要保證其運行性能的穩定。因此,就需要選擇合適的內核頻率,配置最優的時鐘分頻比來達到最優組合。由于分頻比寄存器只支持不分頻,2分頻,3分頻和4分頻4種分頻方式,因此分析3種方案如表1所示。

分析比較方案1和方案2,在SDRAM頻率不變的前提下,將主頻提高(此時主頻提高了1.5倍,已經到達其300 MHz的極限值)一定會使運行速度提高,故方案2優于方案1。
分析比較方案2和方案3,將SDRAM頻率提高到1.3倍,主頻降低到0.87倍,這時內存頻率得到了較大幅度的提高(此時SDRAM的頻率幾乎已經達到133 MHz的極限值),而內核頻率的降低幅度很小,故方案3的啟動速度一定會優于方案2。
4.2 打開I-cache,提高程序的運行速度,加快啟動速度
I-cache功能一般是在MMU開啟之后被使用的(為了降低MMU查表帶來的開銷),但并不是說MMU被開啟了I-cache才能被開啟,本啟動方案只是最簡單的硬件初始化,并不需要打開MMU,但是卻可以打開I-cache來加快啟動速度。
由于本方案從NOR啟動,本平臺采用的NOR芯片為16 b,而內核為32 b,故CPU每次需從NOR讀取2次,才能完整讀取1條指令;而NOR的1個讀周期為70 ns,這樣如果直接從NOR讀取1條指令需要140 ns,CPU大量的時間都在等待,極大的降低了啟動速度。打開 I-cache后,CPU可以直接在I-cache中執行指令,并直接從I-cache中返回,不需要從NOR中讀取,加快了執行速度。
4.3 通過傳輸協議的優化來加快鏡像下載速度
本方案的鏡像下載方式為串口下載,協議為XMODEM協議。XMODEM協議是一種異步文件運輸協議。標準XMODEM協議以128字節塊的形式傳輸數據,并且每個塊都使用1個校驗和過程來進行錯誤檢測。如果接收方關于1個塊的校驗和與它在發送方的校驗和相同時,接收方就向發送方發送1個認可字節(ACK),否則發送NAK。而1 k-XMODEM它以1 024 B一塊來傳輸數據,提高了傳輸速率,同時增加了 CRC 校驗,用來提高傳輸的可靠性。由此可見,采用1 k-XMODEM協議,每次傳輸的數據更多,可以加快鏡像的下載速度。
4.4 通過設計不同的啟動方案,滿足不同用戶的需求
方案一 當系統啟動后,通過串口打印的菜單項選擇進入不同的模塊。選擇1為進入下載更新模塊,通過串口下載和更新鏡像;選擇2或者在設定的時間范圍(3 s)無按鍵,則進入直接引導模塊,從NAND FLASH中引導已存在的鏡像。
方案二 當系統啟動后,通過是否有長按鍵的檢測,進入不同的功能模塊,即有長按鍵,進入更新模塊,通過串口,下載和更新鏡像;反之,沒有長按鍵,則進入直接引導模塊,從NAND FLASH中引導已存在的鏡像。
采用方案2的設計可以使得芯片的開發者與最終用戶的需求分開,既滿足了開發者調試的功能,又實現了最終用戶直接啟動的功能。故采用第二種方案。
5 實驗結果
(1) 在是否打開I-cache 情況下,分別配置不同的時鐘分頻比,比較和分析系統啟動時間,其實驗結果如表2所示:

本實驗采用不按長按鍵,直接從NAND讀取鏡像并運行的啟動方案來測量和比較不同方案的啟動時間的長短。其中燒寫到NAND中的鏡像為56.8 kB大小的eboot鏡像。系統啟動時間的計算方法為:通過利用本芯片中的Timer模塊的計時器功能,對啟動程序進行計時,時間為從進入主函數開始,直到從NAND讀取完鏡像并開始運行為止。
實驗結果證明,采用1∶2的分頻比,打開I-cache,并且將主頻設成260 MHz,APB總線頻率達到130 MHz的情況下,啟動時間最短。另外由實驗結果可見在相同頻率及分頻比配置的前提下,打開I-cache后的啟動時間比未打開I-cache的設計平均提高84.7%。由此可見盡可能地提高存儲總線頻率優于單純提高內核頻率的設計。
(2) 通過選擇不同的傳輸協議,比較和分析兩種方案的實驗結果如表3所示:

實驗結果證明選擇1 k-XMODEM下載鏡像的速度更快。
6 結 語
通過以上實驗結果可知,通過配置適當的內核頻率,選擇最優的時鐘分頻比,并且打開I-cache可提高系統引導速度,縮短啟動時間;通過選擇1 k-XMODEM的傳輸協議可加快鏡像下載速度。另外,通過長按鍵的設計,使得芯片的開發者與最終用戶的需求分開,既滿足了開發者調試的功能,又實現了直接啟動的功能,縮短了啟動時間。通過以上4方面的優化,系統啟動時間大大縮短,滿足了嵌入式系統快速啟動的要求。目前,該啟動方案已經應用于一款手持導航設備的開發中,并且對相關的嵌入式系統開發也具有一定的參考意義。
參 考 文 獻
[1]國家專用集成電路工程技術研究中心.SEP5010用戶手冊\\.2004.
[2]張冬泉.Windows CE實用開發技術\\.北京:電子工業出版社,2006.
[3]時龍興.嵌入式系統基于SEP3203微處理器的應用開發\\.北京:電子工業出版社,2006.
[4]齊欣,張家棟,霍凱.ARM核微處理器Bootloader的分析與應用\\.現代電子技術,2006,29(11):2-4.
[5]王建,許毅平,周曼麗.ARM7嵌入式系統中Bootloader分析與設計\\.微計算機信息,2006,22(5):134-136.
[6]張建義,袁嫣紅,齊玲玲.ARM9啟動機制分析\\.浙江理工大學學報,2007,24(2):2-3.
[7]張宏財,趙曾貽.基于ARM核的Bootloader代碼的分析與設計\\.微計算機信息,2006,22(2):1-3.
[8]白浪,張思東.WinCE系統下BootLoader的開發\\.單片機及嵌入式系統,2004(2):2-4.
[9]黃克彬,葉梧,馮穗力.基于ARM嵌入式開發的調試方案\\.計算機工程,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嵌入式系統的Bootloader的設計與實現\\.現代電子技術,2006,29(7):142-144.
作者簡介 鮑 丹 女,1981年出生,東南大學集成電路學院軟件工程專業工程碩士研究生。研究方向為嵌入式系統。
時建龍 男,1981年出生,東南大學集成電路學院軟件工程專業工程碩士研究生。研究方向為嵌入式系統設計。
戚隆寧 男,1979年出生,東南大學國家專用集成電路系統工程技術研究中心博士研究生。研究方向為嵌入式系統低功耗技術。
胡 晨 男,1967年出生,東南大學電子工程系教授。