Boot Loader按照WinCE啟動(dòng)方式的不同可分為兩大類:一類是下載模式,一類是本地啟動(dòng)模式。
下載模式的基本執(zhí)行過程為:
重定位RAM---初始化調(diào)試端口---初始化平臺(tái)基本設(shè)備---打印用戶菜單---初始化網(wǎng)絡(luò)參數(shù)---下載OS內(nèi)核---啟動(dòng)OS
以Eboot為例,啟動(dòng)過程函數(shù)調(diào)用的順序和功能如下:
Startup( )-----------------初始化CPU、內(nèi)存控制器等
KernelRelocate( )-------代碼重定位至RAM
OEMDebugInit( )-------初始化調(diào)試端口(一般為串口)
OEMPlatformInit( )----初始化板上設(shè)備(初始化顯示、RTC、OAL與eboot共享參數(shù)、打印用戶菜單、網(wǎng)卡等)
OEMPreDownload( )---下載前準(zhǔn)備(設(shè)置設(shè)備名、初始化MAC/IP參數(shù))
DownloadImage( )------下載映像文件
OEMLaunch( )-----------啟動(dòng)OS
一般來說,Eboot所涉及的文件主要有:
Startup.s:包括以上提到的Startup( )函數(shù),源代碼位于%WINCE\Platform\Common\Src\***...和%WINCE\Platform\***\Src\Bootloader\eboot目錄
Main.c: 包括以上提到的OEMDebugInit( )、OEMPlatform( )、OEMPreDownload( )、OEMLaunch( ),源代碼位于%WINCE\Platform\***\Src\Bootloader\eboot目錄
Blcommon.c:包括以上提到的KernelRelocate( )、DownloadImage( ),源代碼位于%WINCE\Public\Common\Oak\Drivers\Ethdbg\Blcommon目錄
Eboot下載的過程主要包括:
(1)設(shè)備通過Bootme使開發(fā)機(jī)獲取設(shè)備IP(DHCP或者指定IP);
(2)開發(fā)機(jī)通過TFTP協(xié)議下載映像到設(shè)備上;
(3) 根據(jù)需求把映像燒寫到Flash中或直接從RAM中啟動(dòng)OS