基于S3C2440的WinCE Bootloader的分析與設(shè)計(jì)
摘要:針對BootLoader嚴(yán)格依賴于具體的嵌入式硬件系統(tǒng),并且從頭開發(fā)一套適合特定硬件系統(tǒng)的BootLoader又相當(dāng)復(fù)雜這一問題,分析設(shè)計(jì)了基于S3C2440的WinCE操作系統(tǒng)的引導(dǎo)程序的實(shí)現(xiàn)方法。結(jié)合飛凌公司的嵌入式產(chǎn)品TE2440的硬件特性,對BootLoader啟動的兩個(gè)階段和配置文件進(jìn)行了詳細(xì)的分析和設(shè)計(jì),最終實(shí)現(xiàn)了系統(tǒng)引導(dǎo)加載程序的構(gòu)建。為項(xiàng)目后續(xù)的開發(fā)奠定了良好的基礎(chǔ)。
關(guān)鍵詞:嵌入式系統(tǒng);引導(dǎo)程序;WinCE;EBoot
Bootloader的開發(fā)是嵌入式系統(tǒng)開發(fā)必不可少的環(huán)節(jié),一個(gè)好的Bootloader不僅可以給項(xiàng)目的后續(xù)開發(fā)工作帶來很大便利,而且在項(xiàng)目開發(fā)結(jié)束后對用戶使用產(chǎn)品也提供了很多方便。但是,由于嵌入式的硬件是無標(biāo)準(zhǔn)、非規(guī)范的,Bootloader的功能又是直接與微處理系統(tǒng)相關(guān)的,所以給開發(fā)人員的工作帶來了許多不便。在實(shí)際的項(xiàng)目開發(fā)中,一般都需要對特定的硬件系統(tǒng)進(jìn)行Bootloader的設(shè)計(jì),可是從頭開發(fā)一套系統(tǒng)的Bootloader是非常復(fù)雜并且耗時(shí)的,針對這一難點(diǎn),微軟公司推出的面向嵌入式應(yīng)用領(lǐng)域的操作系統(tǒng)Windows CE體現(xiàn)了非常大的優(yōu)勢,Windows CE具有強(qiáng)大的操作系統(tǒng)功能、穩(wěn)定可靠的性能、高度的模塊化、可定制性、與桌面Windows平臺一致的開發(fā)特性。它最大的優(yōu)勢是具有高度的模塊化,可以提供與硬件無關(guān)的軟件框架,把與硬件無關(guān)但是又代表普遍通用性的內(nèi)容抽取出來,形成標(biāo)準(zhǔn)函數(shù)庫。而與硬件相關(guān)的不具有通用意義的BootLoader代碼則由開發(fā)人員具體負(fù)債開發(fā),這樣就給開發(fā)人員帶來了相當(dāng)大便利。并且開發(fā)出的Bootloader因是嚴(yán)格按照微軟提供的模板開發(fā),所以又有很好兼容性且效率高。
由于Bootloader的實(shí)現(xiàn)依賴于CPU的體系結(jié)構(gòu),因此從固態(tài)存儲設(shè)備上啟動的BootLoader大多都是兩個(gè)階段的啟動過程。本文以飛凌嵌入式公司的產(chǎn)品TE2440為例,詳細(xì)分析Windows CE BootLoader開發(fā)的兩個(gè)階段過程。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正常工作起來即可,然后把大量復(fù)雜的初始化工作留給第二階段來做。第一階段是在ADS(ARM Developer Suite)環(huán)境下開發(fā)的。S3C2440系統(tǒng)引導(dǎo)加載程序包括2440init,s、2440-lib.s函數(shù)庫、2440lib.c函數(shù)庫、mmu,c、dma,c函數(shù)庫等幾個(gè)主要的文件。因?yàn)榕c硬件密切相關(guān)。所以通常采用匯編語言編寫,本文主要分析s3c2440系統(tǒng)在加電后的硬件設(shè)置處理過程,即2440init.s文件中的程序執(zhí)行過程。
第一階段主要包括如下步驟:
(1)進(jìn)入啟動程序的入口地址,禁止看門狗、屏蔽所有中斷。因?yàn)闉橹袛嗵峁┓?wù)通常是操作系統(tǒng)設(shè)備驅(qū)動程序的責(zé)任,所以在Bootlo-ader的執(zhí)行全過程中可以不必響應(yīng)任何中斷。中斷屏蔽可以通過寫CPU的中斷屏蔽寄存器或狀態(tài)寄存器來完成。
評論