WINCE6.0+S3C2443的启动过程---eboot6

********************************LoongEmbedded********************************

作者:LoongEmbedded(kandi)

时间:2010.11.01

类别:WINCE驱动开发

********************************LoongEmbedded********************************

2.6 OEMLaunch

BootloaderMain函数接下来会调用OEMLaunch函数,

 

1

下面来学习OEMLaunch的主要函数体

2.6.1 WriteOSImageToBootMedia函数

 

2

下面就进去学习WriteOSImageToBootMedia的主要函数体

查找当前下载的映像中是否包含有NK.exe并且返回其扩展指针

 

 

3

标识nbootTOCeboot保存的block的只读信息等,并且擦出eboot之后的所有block

 

4

调用BP_LowLevelFormat来格式化所有存储空间

该函数于级格式化,格式化Flash设备Block,重新创建MBRMBR存第个Blockd第个扇区。dwStartBlock起始BlockdwNumBlocks多少个BlockdwFlags格式化标记位,表示采何种格式化方式。该函数根据需由EBOOT函数调。

 

5

我们来看PB中对BP_LowLevelFormat的说明

 

 

6

MBR: master boot sector, MBRCE中主要是记录后面的存储器空间是如何分区的,这个记录应该和PC上是一样的,起始sector号码,总共有几个Sectors,分区使用什么文件系统(这里是BINFS文件系统,)。但是不同的是,MBR不需要承担引导代码的功能,在MBR之后,按照分区记录中的起始地址,就是各个分区。

 

BINFS: Binary Romimage File System

BINFS就是MSCE做的一种存放系统镜像的一个文件系统,这其实就是一个结构体(说是文件系统确实比较勉强,结构体可能更合适),里面有记录各模块的起始地址,大小等的信息,你要找模块可以根据这个信息到后面找。

 

在把SDRAM中的NK烧写到NAND中去之前,先调用BP_OpenPartition来创建一个BINFS分区,建好之后将nk.bin烧入BINFS分区中。

 

7

我们来看BP_OpenPartitionPB中的描述

 

8

BP_SetDataPointer

该函数用于设置某一个分区的数据指针,实际上数据指针是指在该分区中下一次被读或写的位置。一般会配合BP_ReadData(..)BP_WriteData(..)两个函数来用。hPartition为被创建分区的句柄,dwAddress为数据指针的新位置。

 

9

调用BP_WriteData BINFS分区里面写入数据nk.bin

 

10

BP_WriteData函数最终会调用到flash驱动的函数来写数据。

 

更新TOC和把内核拷贝到SDRAM中,为下一步的跳转执行做准备。

 

11

为系统创建扩展分区

 

12

到此nk.bin对应的MBR也创建了,nk.bin也写进去了,对应的位于1块的TOC数据也更新了,扩展分区也创建了,工作完成了,返回ok,假如把图12部分代码注释掉,系统启动会停止在串口输出的下面信息处

#### FMD_DRIVER:::FMD_OEMIoControl

FMD_OEMIoControl: unrecognized IOCTL (0x71c24).

到此就返回WriteOSImageToBootMedia函数了

 

2.6.2 得到更新后的TOC信息并写回到TOC所在的block中。

 

13

2.6.3 调用函数Launch跳转到OAL.exestartup函数执行,从此eboot阶段的任务就完成了,开始进入OAL.exe,也即进入NK的启动过程了。

 

 

14

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loongembedded

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值