********************************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_WriteDataBINFS分区里面写入数据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

WINCE6.0+S3C2443的启动过程---eboot6相关推荐

  1. WINCE6.0 + S3C2443的启动过程---nboot篇

    WINCE6.0 + S3C2443的启动过程---nboot篇 我们启动WINCE6.0的方式是:nboot+eboot+NK.那么是如何启动WINCE6.0系统映像的呢?首先是nboot把eboo ...

  2. WINCE6.0+S3C2443的启动过程---eboot1

    WINCE6.0+S3C2443的启动过程---eboot 我们知道从nboot把eboot从nandflash中拷贝到内存指定的地址后,就接着在这个地址处开始运行eboot了,之后,nboot的工作 ...

  3. WINCE6.0+S3C2443的启动过程---内核启动

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

  4. WINCE6.0+S3C2443的启动过程---eboot5

    2.3.5 SD卡控制器的相关初始化 一个相关的帖子http://topic.csdn.net/u/20100812/16/d0d5108b-dce1-4535-9e15-6f87bad57e43.h ...

  5. WINCE6.0+S3C2443的启动过程---eboot2

    1.3系统时钟设置 我的另一篇博客介绍了S3C2443的时钟管理http://blog.csdn.net/chinesedragon2010/archive/2010/09/24/5903553.as ...

  6. WINCE6.0+S3C2443的启动过程---eboot4

    http://blog.csdn.net/chinesedragon2010/archive/2010/10/05/5922489.aspx 2 main函数 void main(void) { // ...

  7. WINCE6.0+S3C2443的启动过程---eboot3

    1.6 OEMAddresstable只是用来初始化一级页表,就是所谓的段(section)描述,每个段是1MB,分为4096个段,总共4G--虚拟内存空间4G就是由此而来. 并且这个OEMAddre ...

  8. WINCE6.0+S3C2443下的activesync问题

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

  9. 基于Windows 7旗舰版搭建WinCE6.0开发环境的过程

    首先感谢JeffreyLi提供了更简便的安装WinCE6.0 R3的方法,今天验证过了,确实比我之前整理的<WinCE6.0 R3的安装步骤>方便很多,十分感谢! 为了方便大家参考,重新整 ...

最新文章

  1. sql实现两张表的拷贝
  2. VMware中怎样克隆虚拟机
  3. python创造订单_Odoo 10根据销售订单创建项目
  4. hdc mfc 画扇形图_科学网—画扇形图(idl程序) - 张国印的博文
  5. 已拦截跨源请求:同源策略禁止读取位于XXXXXXXXXXXXXXXX/demo_test.txt 的远程资源。(原因:CORS 请求不是 http)
  6. 【图像处理】——图像特效处理(马赛克、图像融合、毛玻璃等)
  7. 如何彻底卸载MySQL
  8. hssfcolor 不建议使用_不建议使用微信双开的真正原因!
  9. 实现 int 类型(比如id)的模糊查询
  10. [HAOI2006] 聪明的猴子
  11. STANDBY REDO LOG
  12. Android计算器界面布局
  13. “2022绿色智能制造创赢计划”全新集结:加入这个朋友圈,成为未来主角
  14. win10更新后wifi提示无法连接到该网络,终极解决方法
  15. Excel VBA导出操作
  16. 时间序列ARMA中p,q选择
  17. 图书借阅管理系统实现
  18. 2018.8.25T2(随机化)
  19. 《土力学与地基基础(二)》在线平时作业1
  20. 疯狂Java讲义(五)----第一部分

热门文章

  1. 字节流和字符流复制文件内容实例
  2. Idea实体类上加@Data注解但get/set方法不生效
  3. Windows下Unity5x的下载
  4. CMM与CMMI的关系;软件全面质量管理的思想体系
  5. 给定数组 求和等于固定值 算法_[见题拆题] 大厂面试算法真题解析 - 第一期开张...
  6. anguarjs 图片预览_Text to Image Converter(文字转图片软件)下载-Text to Image Converter(文字转图片软件)v1.5绿色版下载...
  7. js里面字符数字和数字相加_「译」5 个奇怪的只会在 JS 里才发生的趣事
  8. python解压文件_使用Python实现文件压缩和解压
  9. Windows 上搭建FTP服务器
  10. Packt.Java.9.High.Performance.2017.11