關(guān)于EBoot和NBoot的區(qū)別(轉(zhuǎn)):2010-07-18 21:30:27| 分類: WinCE | 標簽: |字號大中小 訂閱 S3C2410處理器支持將啟動代碼存儲在NAND Flash中。為了實現(xiàn)這一功能,2410配備了一個名為“Steppingstone”的內(nèi)部SRAM。在啟動時,NAND Flash中第一個4K字節(jié)的內(nèi)容將被加載到Steppingstone中并執(zhí)行。這個工作由MCU主動完成,而我們只需將NAND Flash配置為Auto Boot模式即可。 一般來說,啟動代碼會拷貝存儲在NAND Flash中的內(nèi)容至SDRAM中。在使用ECC校驗時,NAND Flash中數(shù)據(jù)的有效性將被確認。在完成拷貝的工作后,啟動代碼將跳轉(zhuǎn)到已加載到SDRAM中的主程序中,這時啟動代碼的使命完成,MCU由主程序來控制。 WinCE操作系統(tǒng)從文件的組成來看一般分為兩部分:BOOTLOADER和NK.bin。在WinCE中,BOOTLOADER一般為EBOOT。它的主要功能是初始化硬件設(shè)備,主要包括CPU內(nèi)部的相關(guān)控制器、內(nèi)存、網(wǎng)絡(luò)、串口甚至USB口和LCD。在初始化完成后,它將通過網(wǎng)絡(luò)或USB從外部下載NK.bin,或從本地Flash中加載NK.bin并執(zhí)行,從而啟動WinCE操作系統(tǒng)??梢钥吹?/span>Eboot雖然是啟動代碼,但它得完成相當(dāng)多的工作,最終的映像文件也將超過4K。所以,我們不能直接將Eboot存放在NAND Flash的第一個4K字節(jié)中。我們需要一個更小的啟動代碼,這就是通常所說的NBOOT(NAND BOOT)。 通過上面的介紹,我們知道了NBOOT在整個系統(tǒng)中扮演的角色,它負責(zé)將EBOOT加載到內(nèi)存并運行。在EBOOT開始執(zhí)行后,NBOOT就退出了歷史的舞臺,事實上也不再有上場的機會。 在NBOOT的代碼實現(xiàn)中,我們必須完成以下幾個部分。 1. 初始化CPU內(nèi)部相關(guān)控制器,如設(shè)置GPIO,關(guān)閉Watch Dog,關(guān)閉中斷,設(shè)置系統(tǒng)時鐘。 2. 初始化內(nèi)存。 3. 初始化串口,主要用來輸出調(diào)試信息。 4. 初始化NAND Flash,因為在MCU啟動時默認是Auto Boot模式,為了從NAND Flash中讀取EBOOT,需要將其配置成 NAND Flash Mode。 5. 讀取NAND Flash中的EBOOT映像文件,并放在內(nèi)存指定的位置,這個地址是跟EBOOT有關(guān),介紹EBOOT時再詳細說明。 6. 完成讀取之后,跳轉(zhuǎn)到EBOOT的起始位置,執(zhí)行EBOOT代碼。 一般來說,前面兩個功能在startup.s中實現(xiàn),WinCE6.0下可以參考文件C:"WINCE600"PLATFORM"DEVICEEMULATOR"SRC"BOOTLOADER"EBOOT"startup.s的相關(guān)代碼。后面四個功能可在main.c中實現(xiàn)??傊?,在實現(xiàn)必備功能的情況下,盡可能減少代碼量,以將最后的NBOOT映像文件控制在4K以內(nèi)。 NBOOT的編譯環(huán)境一般有兩種,ADS1.2(或RVDS)、Platform Builder。用ADS1.2編譯NBOOT是比較方便的,需要注意的就是RO Base和RW Base的設(shè)置,RO Base必須設(shè)置為0x0。否則,系統(tǒng)啟動時NBOOT將不被運行。在Post-Linker中選擇ARM from ELF,在Linker——ARM fromELF——Output Format中選擇Plain Binary,這樣,編譯完成后最終生成NBoot.bin。該文件就可以固化在NAND Flash的第0個BLOCK中。Platform Builder 6.0是作為VS2005的插件來用的,所以,我們現(xiàn)在也可以用VS2005來編譯NBOOT,這樣就免得再安裝ADS或RVDS等軟件。用VS2005來編譯NBOOT也有兩種方法,第一種跟編譯EBOOT映像文件類似,第二種是自己寫makefile文件,然后用命令行的方式調(diào)用ARM編譯器來編譯。兩種方法各有優(yōu)點,第一種方法在編譯OS時,會自動編譯生成映像,而第二種方法可由ADS下的程序直接移植過來,不過,要寫好makefile文件是相當(dāng)困難的事情。一般還是少用為好。 ----------------------------------------------------------
|
|