Boot Loader按照WinCE启动方式的不同可分为两大类:一类是下载模式,一类是本地启动模式。
下载模式的基本执行过程为:
重定位RAM---初始化调试端口---初始化平台基本设备---打印用户菜单---初始化网络参数---下载OS内核---启动OS
以Eboot为例,启动过程函数调用的顺序和功能如下:
Startup( )-----------------初始化CPU、内存控制器等
KernelRelocate( )-------代码重定位至RAM
OEMDebugInit( )-------初始化调试端口(一般为串口)
OEMPlatformInit( )----初始化板上设备(初始化显示、RTC、OAL与eboot共享参数、打印用户菜单、网卡等)
OEMPreDownload( )---下载前准备(设置设备名、初始化MAC/IP参数)
DownloadImage( )------下载映像文件
OEMLaunch( )-----------启动OS
一般来说,Eboot所涉及的文件主要有:
Startup.s:包括以上提到的Startup( )函数,源代码位于%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)设备通过Bootme使开发机获取设备IP(DHCP或者指定IP);
(2)开发机通过TFTP协议下载映像到设备上;
(3) 根据需求把映像烧写到Flash中或直接从RAM中启动OS