Win CE 6.0启动流程详解

2星 需积分: 0 2 下载量 78 浏览量 更新于2024-09-15 收藏 18KB DOCX 举报
"本文将详细解释Windows CE 6.0操作系统的启动流程,特别是1eboot阶段的关键步骤和后续C语言main函数的执行过程。" Windows CE 6.0的启动顺序是一个复杂的过程,它涉及多个阶段,从硬件初始化到操作系统核心的加载。首先,启动流程始于eboot目录下的startup.s文件中的startup函数。这个函数是1eboot启动序列的起点,负责设置系统的基础运行环境。 1. startup函数的主要任务包括: - CPU设置:将CPU置于特权态(Supervisor Mode),允许无限制地访问内存和硬件资源。 - 中断管理:在CPU级别关闭所有中断,以确保启动过程不会被外部事件打断。 - 内存管理:关闭MMU(Memory Management Unit)和TLB(Translation Lookaside Buffer),防止未映射的地址访问。 - Cache和Write Buffer:使Cache和Write Buffer失效,以确保数据一致性。 - 内存控制器初始化:这是为了能够正确地管理和访问系统内存。 - 片上设备初始化:如时钟的基本设置,确保系统时序的正确性。 - 栈指针设定:为后续C语言执行环境准备栈空间。 - MMU与Cache开启:建立物理和逻辑地址映射,启用Cache以提高性能。 - EBoot到RAM的迁移:将EBoot代码从非易失性存储复制到RAM中,然后跳转执行。 当startup函数执行完毕,系统跳转到C语言的main函数。在main函数中,有八个关键函数会依次执行: - Main函数:这是EBoot的主入口点,负责协调其他函数的调用。 - OEMDebugInit函数:初始化调试输出接口,以便后续代码能通过OEMWriteDebugString等函数输出调试信息。 - OEMPlatformInit函数:初始化目标平台的特定设备,包括LCD显示、USB接口、中断服务程序、bootpartition初始化、TOC(Table of Contents)验证和用户交互界面等。 - InitDisplay:初始化LCD显示,并可能显示启动图像。 - InitUSB:配置USB控制器,为后续USB设备的使用做好准备。 - Isr_Init:设置USB和DMA中断,启用中断服务。 - BP_Init:初始化bootpartition,确保引导分区的正确性。 - TOC_Read和TOC_Init:读取和验证TOC信息,TOC包含了ROM中的关键数据布局。 - 等待按键输入:在规定时间内检测用户是否有按键操作(如空格或回车)。 - MainMenu:根据用户输入,可能显示启动菜单并等待选择。 - InitEthDevice:如果存在,初始化以太网设备,用于网络连接和可能的远程下载。 - OEMPreDownload函数:在下载操作系统镜像前进行的任何预处理工作。 - OEMLaunch函数:负责启动加载的操作系统或应用程序。 - BootloaderMain函数、KernelRelocate函数和DownloadImage函数:这些函数位于blcommon.C文件中,主要职责包括: - KernelRelocate:根据TOC信息将BootLoader的全局变量重定位到RAM,以适应不同的内存布局。 - BootloaderMain:Bootloader的主控制逻辑,协调各个子任务的执行。 - DownloadImage:可能涉及从网络或其他来源下载并加载操作系统映像。 这个启动过程完成后,Windows CE 6.0操作系统的核心将会接管,继续进行驱动加载、服务启动等更高级别的初始化工作,最终进入用户界面,完成启动过程。理解这个过程对于排查启动问题和优化系统性能具有重要意义。