WINCE5.0 PXA270 BSP启动流程详解

需积分: 15 12 下载量 132 浏览量 更新于2024-12-30 收藏 54KB PDF 举报
本文档详细介绍了Windows CE 5.0 (WinCE5.0) 在PXA270平台上的板级支持包(BSP, Board Support Package)启动流程。这个流程主要由以下几个关键步骤组成: 1. EBOOT启动阶段: - `startup.s` 文件负责初始化硬件,如关闭看门狗、禁止中断、初始化GPIO等,但这些具体实现未提供。 - 初始化系统时钟,同样未提及具体的实现细节。 - 调整内存控制器和FLASH控制器,确保系统的内存管理有效。 - 设置堆栈,为后续程序运行提供内存空间。 - 从FLASH中复制EBOOT代码至RAM,并进行校验,如果复制失败,程序会停止;否则,继续执行。 - 建立内存映射和设置MMU,为系统内存分配和保护做好准备。 - 转入`main.c`的`main`函数,执行真正的操作系统初始化。 2. `main.c` 中的`BootloaderMain`函数: - 这个函数是BSP核心部分,调用`blcommon.c`中的BootloaderMain,通常情况下,它不会返回,除非遇到异常情况。 - 之后调用`utils.c`的`SpinForever`函数,但在实际流程中,这部分并不会被执行。 3. `blcommon.c` 内部函数: - `KernelRelocate` 函数将启动相关的全局变量从FLASH复制到SDRAM,如果复制过程中出现错误,会导致程序终止。 - 初始化调试串口和硬件平台,如RTC,并通过串口给出EBOOT启动提示,让用户选择引导WinCE内核或进入EBOOT菜单。 - 用户的选择决定后续操作:引导内核,执行内核下载或者进入EBOOT菜单设置参数。 4. 启动提示与下载/内核选择: - 打印启动信息,然后根据用户输入或预设条件(下载或来自Flash),调用相应的函数,如下载内核的`DownloadImage`函数。 - 对于下载的内核,会继续执行下载过程,然后加载到内存中。 5. 内核加载和最终初始化: - 如果是从下载的内核启动,执行`OEMPreDownload`函数来确认并可能跳转到进一步的加载步骤。 - 最终,加载的内核会被启动,并显示系统启动提示信息。 这个文档为开发人员提供了WinCE5.0在PXA270平台上运行的基础知识,了解启动流程对于理解和调试嵌入式系统设计至关重要。通过深入理解这些步骤,开发者可以更好地定位问题,优化性能,以及定制符合特定应用需求的启动过程。