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