基于S3C2440的WinCE Bootloader的分析與設計
摘要:針對BootLoader嚴格依賴于具體的嵌入式硬件系統,并且從頭開發一套適合特定硬件系統的BootLoader又相當復雜這一問題,分析設計了基于S3C2440的WinCE操作系統的引導程序的實現方法。結合飛凌公司的嵌入式產品TE2440的硬件特性,對BootLoader啟動的兩個階段和配置文件進行了詳細的分析和設計,最終實現了系統引導加載程序的構建。為項目后續的開發奠定了良好的基礎。
關鍵詞:嵌入式系統;引導程序;WinCE;EBoot
Bootloader的開發是嵌入式系統開發必不可少的環節,一個好的Bootloader不僅可以給項目的后續開發工作帶來很大便利,而且在項目開發結束后對用戶使用產品也提供了很多方便。但是,由于嵌入式的硬件是無標準、非規范的,Bootloader的功能又是直接與微處理系統相關的,所以給開發人員的工作帶來了許多不便。在實際的項目開發中,一般都需要對特定的硬件系統進行Bootloader的設計,可是從頭開發一套系統的Bootloader是非常復雜并且耗時的,針對這一難點,微軟公司推出的面向嵌入式應用領域的操作系統Windows CE體現了非常大的優勢,Windows CE具有強大的操作系統功能、穩定可靠的性能、高度的模塊化、可定制性、與桌面Windows平臺一致的開發特性。它最大的優勢是具有高度的模塊化,可以提供與硬件無關的軟件框架,把與硬件無關但是又代表普遍通用性的內容抽取出來,形成標準函數庫。而與硬件相關的不具有通用意義的BootLoader代碼則由開發人員具體負債開發,這樣就給開發人員帶來了相當大便利。并且開發出的Bootloader因是嚴格按照微軟提供的模板開發,所以又有很好兼容性且效率高。
由于Bootloader的實現依賴于CPU的體系結構,因此從固態存儲設備上啟動的BootLoader大多都是兩個階段的啟動過程。本文以飛凌嵌入式公司的產品TE2440為例,詳細分析Windows CE BootLoader開發的兩個階段過程。TE2440的微處理器采用三星公司的S3C2440A,主頻400MH-z,內置64 MB SDRAM和64 MB NANDFLASH,10 M網口,采用CS8900Q3。S3C2440支持2種啟動模式:一種是從NandFlash啟動;另一種是從NorF-lash啟動,TE2440支持從NandFlash啟動。
1 Bootloader的第一階段分析
為了防止給后來的調試工作帶來更多的麻煩,要盡量使第一階段做盡可能少的工作,只要使CPU正常工作起來即可,然后把大量復雜的初始化工作留給第二階段來做。第一階段是在ADS(ARM Developer Suite)環境下開發的。S3C2440系統引導加載程序包括2440init,s、2440-lib.s函數庫、2440lib.c函數庫、mmu,c、dma,c函數庫等幾個主要的文件。因為與硬件密切相關。所以通常采用匯編語言編寫,本文主要分析s3c2440系統在加電后的硬件設置處理過程,即2440init.s文件中的程序執行過程。
第一階段主要包括如下步驟:
(1)進入啟動程序的入口地址,禁止看門狗、屏蔽所有中斷。因為為中斷提供服務通常是操作系統設備驅動程序的責任,所以在Bootlo-ader的執行全過程中可以不必響應任何中斷。中斷屏蔽可以通過寫CPU的中斷屏蔽寄存器或狀態寄存器來完成。
評論