當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]基于S3C2440的WinCE Bootloader的分析與設計

摘要:針對BootLoader嚴格依賴于具體的嵌入式硬件系統(tǒng),并且從頭開發(fā)一套適合特定硬件系統(tǒng)的BootLoader又相當復雜這一問題,分析設計了基于S3C2440的WinCE操作系統(tǒng)的引導程序的實現(xiàn)方法。結(jié)合飛凌公司的嵌入式產(chǎn)品TE2440的硬件特性,對BootLoader啟動的兩個階段和配置文件進行了詳細的分析和設計,最終實現(xiàn)了系統(tǒng)引導加載程序的構(gòu)建。為項目后續(xù)的開發(fā)奠定了良好的基礎。
關鍵詞:嵌入式系統(tǒng);引導程序;WinCE;EBoot

    Bootloader的開發(fā)是嵌入式系統(tǒng)開發(fā)必不可少的環(huán)節(jié),一個好的Bootloader不僅可以給項目的后續(xù)開發(fā)工作帶來很大便利,而且在項目開發(fā)結(jié)束后對用戶使用產(chǎn)品也提供了很多方便。但是,由于嵌入式的硬件是無標準、非規(guī)范的,Bootloader的功能又是直接與微處理系統(tǒng)相關的,所以給開發(fā)人員的工作帶來了許多不便。在實際的項目開發(fā)中,一般都需要對特定的硬件系統(tǒng)進行Bootloader的設計,可是從頭開發(fā)一套系統(tǒng)的Bootloader是非常復雜并且耗時的,針對這一難點,微軟公司推出的面向嵌入式應用領域的操作系統(tǒng)Windows CE體現(xiàn)了非常大的優(yōu)勢,Windows CE具有強大的操作系統(tǒng)功能、穩(wěn)定可靠的性能、高度的模塊化、可定制性、與桌面Windows平臺一致的開發(fā)特性。它最大的優(yōu)勢是具有高度的模塊化,可以提供與硬件無關的軟件框架,把與硬件無關但是又代表普遍通用性的內(nèi)容抽取出來,形成標準函數(shù)庫。而與硬件相關的不具有通用意義的BootLoader代碼則由開發(fā)人員具體負債開發(fā),這樣就給開發(fā)人員帶來了相當大便利。并且開發(fā)出的Bootloader因是嚴格按照微軟提供的模板開發(fā),所以又有很好兼容性且效率高。
    由于Bootloader的實現(xiàn)依賴于CPU的體系結(jié)構(gòu),因此從固態(tài)存儲設備上啟動的BootLoader大多都是兩個階段的啟動過程。本文以飛凌嵌入式公司的產(chǎn)品TE2440為例,詳細分析Windows CE BootLoader開發(fā)的兩個階段過程。TE2440的微處理器采用三星公司的S3C2440A,主頻400MH-z,內(nèi)置64 MB SDRAM和64 MB NANDFLASH,10 M網(wǎng)口,采用CS8900Q3。S3C2440支持2種啟動模式:一種是從NandFlash啟動;另一種是從NorF-lash啟動,TE2440支持從NandFlash啟動。

1 Bootloader的第一階段分析
    為了防止給后來的調(diào)試工作帶來更多的麻煩,要盡量使第一階段做盡可能少的工作,只要使CPU正常工作起來即可,然后把大量復雜的初始化工作留給第二階段來做。第一階段是在ADS(ARM Developer Suite)環(huán)境下開發(fā)的。S3C2440系統(tǒng)引導加載程序包括2440init,s、2440-lib.s函數(shù)庫、2440lib.c函數(shù)庫、mmu,c、dma,c函數(shù)庫等幾個主要的文件。因為與硬件密切相關。所以通常采用匯編語言編寫,本文主要分析s3c2440系統(tǒng)在加電后的硬件設置處理過程,即2440init.s文件中的程序執(zhí)行過程。
    第一階段主要包括如下步驟:
    (1)進入啟動程序的入口地址,禁止看門狗、屏蔽所有中斷。因為為中斷提供服務通常是操作系統(tǒng)設備驅(qū)動程序的責任,所以在Bootlo-ader的執(zhí)行全過程中可以不必響應任何中斷。中斷屏蔽可以通過寫CPU的中斷屏蔽寄存器或狀態(tài)寄存器來完成。
    

[!--empirenews.page--]
    (2)設置CPU的速度和時鐘頻率
    根據(jù)工作頻率設置時鐘、PLL,2440內(nèi)部3個時鐘:FCLK、HCLK、PCLK,分別供CPU、AHB總線和APB總線使用,一般都選擇周期比為1:2:8的設置。

    (3)初始化基本硬件和存儲器系統(tǒng)
   
    (4)設置堆棧并跳轉(zhuǎn)至第二階段的入口。將FLASH中的代碼段、數(shù)據(jù)段拷貝到RAM中,將初始化數(shù)據(jù)段,跳入C語言的main函數(shù)執(zhí)行,結(jié)束Bootloader初步引導;Bi的主要功能是引導和加載操作系統(tǒng),不會用到很多種類型及數(shù)量的外設,如果在BL中啟用中斷反而會使對問題的處理復雜化。

[!--empirenews.page--]
2 Bootloader的第二階段分析
    第一階段結(jié)束之后,函數(shù)跳轉(zhuǎn)到由C語言寫的main()函數(shù),也就是Bootloader開發(fā)的第二階段EBoot,該階段的開發(fā)環(huán)境是Platform Builder,簡稱PB,它是微軟提供給開發(fā)人員進行基于Windows CE平臺下嵌入式操作系統(tǒng)定制的集成開發(fā)環(huán)境。main()函數(shù)實現(xiàn)代碼為:
    
    該函數(shù)主要功能就是調(diào)用BootloaderMain()函數(shù),其實main函數(shù)不是必須的,實際上程序也可以直接跳轉(zhuǎn)到BootloaderMain()函數(shù),在第一階段的匯編代碼后加入main()函數(shù)可以更好地提高程序的性能。本文主要分析BootloaderMain()調(diào)用的一些關鍵的函數(shù),函數(shù)調(diào)用關系如圖1所示。


    最早被BootLaderMain()調(diào)用的OEM函數(shù)是OEMDebugInit(),它負責初始化BootLoader的調(diào)試功能串口,在它被調(diào)用運行之后BootLoader的代碼才可以調(diào)用它的調(diào)試輸出功能函數(shù)。OEMDebugInit()調(diào)用OEMInitDebugSerial()來初始化調(diào)試串口。[!--empirenews.page--]
    OEMPlatformInit()函數(shù)是BootLoader的最重要的OEM函數(shù),所有與BootLoader所需硬件功能有關的目標平臺板級外設如以太網(wǎng)接口、Fl-ash存儲器等都在這里進行初始化,包括嵌入式CPU芯片內(nèi)置的外設。它結(jié)束后就開始下載工作了。函數(shù)代碼如下:
    
    OEMPreDownload():所有在硬件初始化完成以后、開始下載操作系統(tǒng)鏡像之前所需要處理的任務都可以放在該函數(shù)完成。它主要任務是以太網(wǎng)下載前的準備工作。DownloadImage()的任務是從遠程開發(fā)機上下載操作系統(tǒng)鏡像到RAM。它通過調(diào)用OEMReadData()從下載端口讀取操作系統(tǒng)鏡像的數(shù)據(jù),在本文的EBoot中,該函數(shù)主要負責從以太網(wǎng)端口讀取操作系統(tǒng)鏡像數(shù)據(jù);它還調(diào)用OEMShowProgress()函數(shù)用來向用戶顯示BootLoader下載操作系統(tǒng)鏡像時的下載狀態(tài)。OEMMapMemAddr()函數(shù)用于當下載得到的操作系統(tǒng)鏡像自身所記錄的目的地址是Flash存儲設備時該OEM函數(shù)要負債將鏡像的數(shù)據(jù)以重定位的方式暫存到RAM內(nèi)存緩沖區(qū)中。
    OEMLaunch()是最后一個被BootLaderMain()函數(shù)調(diào)用的。它的主要功能是實現(xiàn)目標嵌入式系統(tǒng)程序執(zhí)行流跳轉(zhuǎn)。無論BootLoader是通過以太網(wǎng)端口下載操作系統(tǒng)鏡像還是從本地讀取操作系統(tǒng)鏡像到內(nèi)存,都要依靠該函數(shù)將程序的執(zhí)行流從BootLoader轉(zhuǎn)移到Windows CE的操作系統(tǒng)。Downloadlmage()函數(shù)下載的操作系統(tǒng)鏡像是暫存在RAM中的,所以我們還需要在OEMLaunch()函數(shù)指令執(zhí)行跳轉(zhuǎn)之前保存下載所得的操作系統(tǒng)鏡像以及用戶配置數(shù)據(jù)到Flash,以便系統(tǒng)從新啟動或者復位時可以直接從本地存儲讀取鏡像數(shù)據(jù)。

3 配置文件
    Bootloader源代碼編譯后會產(chǎn)生一個名為eboot.exe的可執(zhí)行文件,但寫入Flash的Bootloader是一個二進制的映像文件,也就是.bin文件或.nbO文件,所以需要把eboot.exe文件轉(zhuǎn)換成.bin文件或.nbO文件。


4 燒寫B(tài)ootloader
    配置好了之后,在PC機中編譯產(chǎn)生了Eboot.bin文件,把Bootloader燒寫到目標機中。利用三星公司的sjf2440工具燒寫,使用JTAG實現(xiàn)下載。BootLoader下載后再通過以太網(wǎng)口把操作系統(tǒng)內(nèi)核鏡像文件下載到目標機中。下載鏡像所使用的軟件是DNW,DNW是三星公司為S3C2 440芯片配置的一款專用軟件,它可以在Windows下通過USB方式燒寫Flash。如圖2所示,內(nèi)核鏡像已下載到NandFlash中。

5 結(jié)語
    BootLoader的設計和實現(xiàn)是一個非常復雜并且重要的過程,一個好的Bootloader可以給嵌入式產(chǎn)品的開發(fā)調(diào)試工作帶來許多便利。本文從源代碼人手詳細分析了Wince Bootloader啟動的兩個階段以及配置文件信息。實驗達到了預期的效果,為項目后續(xù)的開發(fā)奠定了良好的基礎。
 

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

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

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

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

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

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

關鍵字: 亞馬遜 解密 控制平面 BSP

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

關鍵字: 騰訊 編碼器 CPU

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

關鍵字: 華為 12nm EDA 半導體

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

關鍵字: 華為 12nm 手機 衛(wèi)星通信

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

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

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

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

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

關鍵字: BSP 信息技術
關閉
關閉