Windows CE启动解析:从Stepldr到EBOOT
需积分: 3 42 浏览量
更新于2024-09-16
收藏 20KB DOCX 举报
"本文主要介绍了Windows CE (Wince) 的启动流程,包括stepldr和eboot两个关键阶段。stepldr阶段涉及一系列初始化操作,如ICache的启用,GPIO和UART的设置,nandflash接口初始化,以及将Image从闪存拷贝到RAM。之后调用函数执行启动流程。在eboot阶段,从startup.s的startup函数开始,CPU状态调整,中断关闭,MMU和TLB关闭,Cache和WriteBuffer失效,内存控制器和其他片上设备初始化,栈指针设置,MMU开启,EBoot代码复制到RAM并跳转执行,最终进入C语言的main函数。在main函数中,有多个特定功能的函数被执行,如全局变量重定位,调试端口初始化,平台特定初始化,下载处理等。这些步骤对于理解Wince的启动过程和驱动结构至关重要。"
Windows CE操作系统是微软开发的一个嵌入式实时操作系统,其启动流程分为stepldr和eboot两个主要部分。
1. stepldr阶段:
- SetupCopySection(pTOC):这一步骤涉及到将系统映像从非易失性存储(如nandflash)复制到RAM中,pTOC是一个表格,包含了映像的布局信息。
- MMU_EnableICache():启用指令缓存(ICache),以提高处理器性能。
- Port_Init():初始化GPIO端口,用于板级控制。
- Uart_Init():初始化UART,为调试提供串行通信接口。
- NF_Init():初始化nandflash接口,以便读取和写入数据。
- Image从Flash拷贝到RAM:这是为了在运行时提升性能,因为RAM的访问速度远超Flash。
- ((PFN_IMAGE_LAUNCH)(LOAD_ADDRESS_PHYSICAL))():最后,调用函数启动实际的操作系统加载过程。
2. EBOOT阶段:
- startup函数:这是eboot的起点,它负责设置CPU状态,关闭中断,禁用MMU和TLB,失效Cache和WriteBuffer。
- 内存控制器和片上设备初始化:这是为了确保系统硬件的正常工作。
- 设置栈指针和开启MMU:为后续C代码执行创建环境。
- EBoot代码移到RAM并执行:这优化了执行效率。
- C语言的main函数:在这里,执行一系列关键函数,如KernelRelocate,OEMDebugInit,OEMPlatformInit,OEMPreDownload和OEMLaunch等,它们各自承担特定的系统配置和初始化任务。
KernelRelocate函数用于将BootLoader的全局变量重新定位到RAM中,以确保数据的正确性。
OEMDebugInit初始化调试输出端口,便于后续调试。
OEMPlatformInit针对目标板进行特定的初始化操作,可能包括对额外硬件的支持。
OEMPreDownload和OEMLaunch则可能涉及系统下载和启动的进一步处理。
通过深入理解这些启动阶段和过程,开发者能够更好地调试和定制Windows CE系统,以适应各种嵌入式设备的需求。
2014-08-29 上传
2008-11-18 上传
2008-12-25 上传
2011-05-03 上传
2019-02-20 上传
2009-12-16 上传
2008-12-31 上传
2008-12-19 上传
2011-12-07 上传
xuflyme
- 粉丝: 4
- 资源: 15