Monahans系统开机流程PMU检测到 power key 后,通知 Intel有上电操作。如图1所示,Intel首先进入 BOOTROM程序, 然后由 BOOTROM加载 MOBM到芯片的内部SRAM中, 然后由 MOBM加载各自的BootLoader 到SRAM中。再由 BootLoader 加载操作系统的映象到 SRAM中,整个系统由此启动。BOOTROM是固化在 CPU内的一段代码。 他的主要任务是加载FLASH 中的系统引导程序和烧写 FlASH,以及一些必要的初始化程序,BOOTROM大致流程如图2所示:系 统复 位并 初始 化后 , BOOTROM会 检测FFUART或 USB是否收到主机(PC)发出的烧写(FLASH)的命令, 如果收到烧写命令,BOOTROM将按照特定的协议与主机建立连接,下载并烧写FLASH。如果未收到烧写命令,BOOTROM将正常引导系统。进入正常引导程序后,BOOTROM首先加载并运行 MOBM。接下来,系统进入MOBM。MOBM功能较为简单,它对系统做更为全面的初始化后,加载并运行真正意义上的BootLoader 。在 Windows Mobile 6.0系统中,真正的BootLoader 应该是 IPL。但是为了开发调试方便,在系统进入IPL 之前首先进入EBOOT。EBOOT也就是 Ethernet Boot,它可以通过以太网或 RNIDS(用 USB虚拟的以太网口)跟我们的开发调试环境PB建立连接,并通过下载操作系统映像或调试底层软件。EBOOT还可以通过串口和PC机交互,打印引导配置菜单和调试信息。 EBOOT的大致流程如图3 所示。POWER ONBOOTROMNORMAL OSULDREBOOTIPLMOBM是否需要进入ULDRRESET初始化系统加载 MOBM烧写 FLASH是否需要烧写FLASH图 1 系统启动流程图图 2 BOOT ROM 流程做完必要的初始化后,EBOOT通过串口打印出系统设置菜单,开发人员可以通过PC端的超级终端程序与EBOOT交互来设置系统启动设备、系统调试端口、KITL 工作模式、 IP 地址等系统引导参数。EBOOT会将这些参数永久保存在FLASH永久区域, 同时将这些参数保存在系统保留内存空间以供IPL 和操作系统内核访问。 由于现在大多数手机已经不保留串口,也就无法通过超级终端程序与EBOOT交互。于是需要修改EBOOT程序, 让它通过判断用户按键来完成这些系统配置工作。比如开机后长按“Volume up ”进入下载模式,长按“Volume down ”键开启 kitl进入调试模式,若没有按键,系统关闭kitl正常引导操作系统。若不需要 PB下载操作系统映像,EBOOT在设置完系统引导参数后便会加载IPL 。IPL (Initial program loader)的主要任务是:通过判断EBOOT传...