### WinCE6中Boot Loader工作流程详解 #### 概述 在嵌入式系统的开发过程中,Boot Loader(启动加载程序)扮演着至关重要的角色。它负责在操作系统运行之前完成一系列必要的初始化工作,确保硬件环境达到运行操作系统的条件,并最终引导操作系统启动。本文将基于Windows CE 6.0平台,详细介绍其Boot Loader的工作流程。 #### Boot Loader工作流程图 根据文档提供的信息,Boot Loader的主要工作流程可以概括如下: 1. **Main()**:主函数入口,位于`%_TARGETPLATROOT%\SRC\BOOTLOADER\EBOOT\main.c`。 2. **BootloaderMain()**:Boot Loader的核心处理函数,位于`%_TARGETPLATROOT%\SRC\BOOTLOADER\EBOOT\main.c`。 3. **Startup()**:系统启动时的初始化函数,位于`%_TARGETPLATROOT%\SRC\BOOTLOADER\EBOOT\startup.s`。 #### 启动流程详解 ##### 1. 初始化阶段 - **禁用中断**:为了确保系统的稳定性和初始化过程的正确性,Boot Loader会首先禁用中断。 - **配置总线模式和PLL**:根据硬件需求设置总线模式,并对PLL(锁相环)进行初始化,确保时钟频率符合要求。 - **初始化调试端口**:通常情况下,Boot Loader会初始化串口作为调试端口。该函数`OEMDebugInit()`位于`%_PUBLICROOT%\COMMON\OAK\DRIVERS\ETHDBG\BLCOMMON\blcommon.c`。 - **清空TLB并使Cache失效**:为了确保内存管理单元(MMU)能够正确工作,需要清空TLB(Translation Lookaside Buffer),并使Cache失效。 - **调用OEMPlatformInit()**:执行特定于平台的目标设备初始化代码。此函数位于`%_TARGETPLATROOT%\SRC\BOOTLOADER\EBOOT\main.c`。 ##### 2. 配置阶段 - **初始化显示屏**:通过调用`InitDisplay()`函数初始化显示屏。此函数位于`%_TARGETPLATROOT%\SRC\BOOTLOADER\EBOOT\main.c`。 - **初始化Flash和NAND Flash驱动**:分别通过`AM29LV800_Init`和相应的NAND Flash驱动进行初始化。这些函数位于`%_TARGETPLATROOT%\SRC\COMMON\AMD\NORBASE\am29lv800.c`和`%_TARGETPLATROOT%\SRC\BOOTLOADER\EBOOT\main.c`。 - **读取Boot Loader配置信息**:从Flash中读取Boot Loader的配置信息。 - **打印菜单供用户选择**:提供一个简单的菜单供用户选择不同的启动选项(如从网络下载、从存储设备启动等)。 ##### 3. 下载准备阶段 - **初始化以太网控制器**:通过`InitEthDevice()`函数初始化以太网控制器。此函数位于`%_TARGETPLATROOT%\SRC\BOOTLOADER\EBOOT\Ether.c`。 - **创建设备名**:使用`OALKitlCreateName()`函数创建一个设备名,以便PB(PacketBuilder)能够识别。此函数位于`%_TARGETPLATROOT%\SRC\BOOTLOADER\EBOOT\name.c`。 - **初始化TFTP服务器**:使用`EbootInitEtherTransport()`函数为TFTP传输做准备,此函数位于`%_PUBLICROOT%\COMMON\OAK\DRIVERS\ETHDBG\EBoot\ebsimp.c`。 - **获取IP地址**:通过`EbootGetDHCPAddr()`函数尝试获取IP地址,如果未使用DHCP,则手动分配。此函数位于`%_PUBLICROOT%\COMMON\OAK\DRIVERS\ETHDBG\EBoot\ebsimp.c`。 ##### 4. 下载阶段 - **下载映像**:通过`DownloadImage()`函数下载操作系统映像。此函数位于`%_PUBLICROOT%\COMMON\OAK\DRIVERS\ETHDBG\EBoot\ebsimp.c`。 - **读取魔术码**:读取7字节的魔术码,用于确认文件类型。 - **比较魔术码**:根据不同的魔术码确定文件类型,支持的标准BIN文件魔术码为`X000FF`。 - **处理不同类型的BIN文件**:如果是多个BIN文件,需要读取每个BIN文件的起始地址和大小,并按顺序下载。 - **下载结束**:当所有BIN文件都下载完毕后,继续下一步骤。 ##### 5. 启动操作系统 - **跳转到休眠的系统**:通过调用`OEMLaunch()`函数来启动操作系统。此函数位于`%_PUBLICROOT%\COMMON\OAK\DRIVERS\ETHDBG\BLCOMMON\blcommon.c`。 #### 结论 Windows CE 6.0中的Boot Loader通过一系列精心设计的步骤,实现了从硬件初始化到操作系统启动的全过程。这一流程不仅确保了系统的稳定性和可靠性,也为后续的操作系统提供了良好的运行环境。对于初学者来说,深入理解Boot Loader的工作原理和流程是非常有帮助的,可以帮助他们更好地掌握Windows CE 6.0平台的相关技术。
- 竭尽2012-12-19我还以为可以在wince里面运行,结果运行不了
- 粉丝: 26
- 资源: 75
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助