Win CE 6.0启动流程详解
2星 需积分: 0 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操作系统的核心将会接管,继续进行驱动加载、服务启动等更高级别的初始化工作,最终进入用户界面,完成启动过程。理解这个过程对于排查启动问题和优化系统性能具有重要意义。
312 浏览量
2013-07-16 上传
192 浏览量
点击了解资源详情
2024-11-03 上传
2024-12-02 上传
2024-12-02 上传
yexinfeng06010918
- 粉丝: 0
- 资源: 2
最新资源
- WordPress作为新闻管理面板的实现指南
- NPC_Generator:使用Ruby打造的游戏角色生成器
- MATLAB实现变邻域搜索算法源码解析
- 探索C++并行编程:使用INTEL TBB的项目实践
- 玫枫跟打器:网页版五笔打字工具,提升macOS打字效率
- 萨尔塔·阿萨尔·希塔斯:SATINDER项目解析
- 掌握变邻域搜索算法:MATLAB代码实践
- saaraansh: 简化法律文档,打破语言障碍的智能应用
- 探索牛角交友盲盒系统:PHP开源交友平台的新选择
- 探索Nullfactory-SSRSExtensions: 强化SQL Server报告服务
- Lotide:一套JavaScript实用工具库的深度解析
- 利用Aurelia 2脚手架搭建新项目的快速指南
- 变邻域搜索算法Matlab实现教程
- 实战指南:构建高效ES+Redis+MySQL架构解决方案
- GitHub Pages入门模板快速启动指南
- NeonClock遗产版:包名更迭与应用更新