首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Windows CE OAL层的结构与开发 02

Windows CE OAL层的结构与开发 02

在start up函数完成最小硬件环境初始化后跳转到KernelStart函数(当CPU为x86架构时为Kernel Initial-ize函数),来对内核进行初始化;
③Kernelstart函数调用OEMInitDebugSerial完成对调试串口的初始化,调用0EMInit函数来完成硬件初始化工作以及设置时钟、中断,调用OEMGetExtensionDRAM函数来判断是否还有另外一块DRAM。
至此,内核加载完毕。由此可见,OS启动的重中之重是Startup函数的正确加载。
2.1 Startup
Startup阶段的特点是Kernel还没有加载起来,调试工作比较困难。StartuP函数的两大核心任务分别是把CPU初始化到一已知状态和调用内核初始化函数来初始化内核。以下是Startup函数中通常包含的内容:
①把处理器置为监控模式;
②禁止CPU的IRQ和FIQ输入;
③禁止内存管理单元MMU和指令、数据Cache;
④刷新指令和数据Cache、TLB、清空写buffr;
⑤确定启动的原因一hard reset,wake from sleep,
GPIO reset,Watchdog reset,eboot handoff;
⑥根据目标板需要配置GPIO,比如连接LED的GPIO;
⑦配置内存管理器,设置刷新频率,使能时钟;
⑧配置中断控制器;
⑨初始化实时时钟(RTC)为0,使能实时时钟;
⑩设置电源管理寄存器;
⑾打开所有板级时钟和片内外部时钟;
⑿取得OEMAddressTable的物理基地址并把它存在r0中;
⒀跳转到KernelStart。
Bootloader和OAL中均包含Startup函数。它的功能大致相同,都是要初始化最小硬件环境。Bootloader是在为自己的执行准备硬件环境,OAL则是为kernel的执行准备硬件环境。由于这两种硬件环境要求基本相同.
返回列表