wince 6.0 启动过程

wince 6.0 启动过程


2024年5月2日发(作者:gtx好还是rtx好)

以S3C6410为例子,S3C6410的内部SRAM地址为0x0C00 0000 ~ 0x0C00

1FFF,DRAM的Base地址为0x50000000 ,S3C6410支持NAND,SD启动,S3C6410里面

有固化的ROM,

当系统上电的时候,将执行固化ROM中的代码,然后检查硬件的GPIO配置,如果配置成

NAND 启动,则把NAND的前8K读入内部的SRAM(stepping Stone)中,然后跳转到

Stepping Stone的开头,执行Bootloader1 (也就是下文的stepldr), stepldr负责把

eboot从NAND中搬到DRAM中,然后执行eboot( boot loader 2),eboot通过网络下载

或者从NAND中把内核搬到DRAM中,然后执行WINCE内核.所以整个启动

过程分为三阶段,stepldr -->eboot --> wince kernel .

下面详细地分析各个阶段.

一 bootloader 1 stepldr

从stepldr的startup.s开始.startup.s主要是初始化硬件,中断,配置好C运行的环境,

然后跳转到main函数中,执行C代码.

startuo.s 的流程是 :

startup --> Enable I cache -->关闭watchdog ,Interrupt dosable -> 时钟初始

化 --> 初始化DRAM控制器 --> 初始化IRQ,SVC stack -->

判断是否睡眠 ---N--> Clear DRAM -->main

--Y-> 跳到NK的开头 (也就是DRAM + 0x100000的地方)

main.c :

UART初始化 --> nand 初始化 -> 从NAND中把eboot搬到DRAM中 -->跳

转到 eboot的开头

我们看代码有2个全局变量。

ROMHDR * volatile const pTOC = (ROMHDR *)-1; 这个在ROMImage里面会赋

值。

static BOOL g_bLargeBlock = FALSE; // For Large Block Check

这两个全局变量的位置为:500F0000 根据

二 bootloader 2 eboot

startup.s

startup --> Enable I cache -->关闭watchdog ,Interrupt dosable -> 时钟初始

化 --> Disable VIC --> enable 中断 -->CLEAR DRAM(从1M到128M地址的DRAM,


发布者:admin,转转请注明出处:http://www.yc00.com/xitong/1714579494a2473909.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信