作者:ARM-WinCE

在EBOOT中,从Startup.s跳转到C程序入口以后,程序就可以用C语言来编写了,这样感觉就好多了。一般C语言的入口就是一个Main函数,也可能叫其他的名字。在这个Main函数中会掉用BootloaderMain函数,该函数在BLCOMMON模块中被定义的。一般Main函数的写法如下:

void (void)

{

// Common boot loader (blcommon) main routine.

BootloaderMain();

// Should never get here.

SpinForever();

}

从程序中可以看出,EBoot在进入C程序以后,只调用了BootloaderMain函数,至于SpinForever函数实际上就是一个while的死循环。所以可以看出,Eboot的所有工作都在BootloaderMain中完成,源代码可以在” /WINCE600/PUBLIC/COMMON/OAK/DRIVERS/ETHDBG/BLCOMMON”里找到。具体流程如图:

下面介绍一下具体步骤:

1. BootloaderMain函数首先调用KernelRelocate函数将Bootloader中用到的全局变量拷贝到RAM中。

2. 然后调用OEMDebugInit函数来初始化Debug调试功能,一般都是初始化串口,这样从这里以后就可以使用串口打印调试信息了。

3. 之后调用OEMPlatformInit函数,来对板子进行初始化,很多和平台相关的初始化工作都可以在这个函数中完成。

4. 调用OEMPreDownload函数,从流程上来说应该是为下载内核做一些准备工作,该函数执行后,根据返回值得不同可以选择下载内核,或者跳转执行。实际上,该函数中首先会读取Boot配置信息,然后初始化下载设备,一般是网卡设备。

5. 如果OEMPreDownload函数返回BL_DOWNLOAD时,将会从主机下载WinCE image。

6. 如果OEMPreDownload函数返回BL_JUMP时,直接跳转到WinCE image所在的位置开始执行。

其中涉及的OEM函数都是需要用户自己实现的,然后被BLCOMMON模块来调用。这些函数会在以后介绍。

WinCE Eboot中的BLCOMMON相关推荐

  1. WinCE EBOOT中的BootPart分析

    应该说BootPart算是微软提供的一个用于分区的模块,可以在EBOOT中使用.不过说实话,我很少使用它,知道有些厂商的BSP里面支持这个功能,而且也算是EBOOT的一部分,所以还是介绍一下.先看一下 ...

  2. WinCE EBOOT中的Boot Args与Driver Globals (转)

    在EBOOT中包含的一个重要的缓冲区叫Driver Globals,它用于在设备驱动和WinCE OS之间共享数据.而在EBOOT中会用到的启动参数结构被称为Boot Args,是指用于EBOOT和W ...

  3. Eboot 中给nandflash分区实现

    提到分区就不得不提到MBR,不得不提到分区表. 什么是MBR 硬盘的0柱面.0磁头.1扇区称为主引导扇区,NANDFLASH由BLOCK和Sector组成,所以NANDFLASH的第0 BLOCK,第 ...

  4. Wince6 Eboot中加入开机画面

    昨天研究了一下wince开机时加入个性化的画面,折腾了一上午,不是花屏就是CE起不来--终于搞定,分享一下经验吧... Wince加入开机画面方法一般有以下两种: 1. 在文件中下定义一个常量大数组, ...

  5. WINCE BSP中source文件中的宏定义

    在WinCE BSP中会看到很多sources文件,一般会和源代码放在同一个目录,当然不是绝对的.这些sources文件里面就是定义了一些宏,主要用于告诉Build.exe在编译源代码的时候应该如何编 ...

  6. WinCE OAL中的OEMIoControl函数

    关于OEMIoControl函数,我在2008年1月份写过一篇blog叫"WinCE BSP中OAL层中的OEMIoControl介绍",已经比较详细的介绍了OEMIoContro ...

  7. WinCE OAL中的RAM定制函数

    在WinCE系统中,Kernel是如何使用内存的,如何知道内存的大小?是通过config.bib文件的描述,我们会在config.bib文件中MEMORY段定义WinCE内核所占用RAM的起始地址和大 ...

  8. WINCE 系统中的同步机制

    摘要 Windows® CE 是微软系列嵌入式平台所采用的操作系统内核.本文讨论了 WinCE 进程/线程之间的同步机制,给出了它们的典型应用场景.这些同步机制包括临界区.互斥体.信号量.事件.互锁函 ...

  9. WINCE开发中,EBOOT模式下,TFTP方式无法下载NK镜像的问题解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 使用自己修改的EBOOT,无法下载NK镜像,可以连接到PC机,PC机也可以检测到目标,就是在下载的时候卡住,显示的速度为0KB ...

最新文章

  1. .如何实现浏览器内多个标签页之间的通信?
  2. Android 求圆的面积
  3. lucene源码分析(5)lucence-group
  4. sendmail启动报错
  5. import cv2时ImportError: libjasper.so.1: cannot open shared object file: No such file or directory
  6. gojs 部分功能实现
  7. python内置函数面向对象_Pyhton——面向对象进阶二:类的内置函数补充、描述符...
  8. WebStorm 打开Node.js的代码提示功能
  9. stl源码剖析_《STL源码剖析》学习笔记
  10. 楔和的基本群|Seifert-Van Kampen定理的简单应用
  11. sql 删除一条记录_京东笔试题:如何实现 MySQL 删除重复记录并且只保留一条?...
  12. Spring 集成mybatis 3.几之后,打印sql语句到控制台
  13. ffmpeg下载及转码批量操作
  14. 计算机综合布线基本知识,综合布线系统基础知识学习
  15. PDE——delta函数
  16. vivo手机的坑-禁止微信浏览器网页点击图片,图片会自动放大
  17. PhotoShop一键修改4的倍数图片工具
  18. 如何批量一键下单寄快递
  19. 企业架构图之业务架构图
  20. 安装C3D v1.0提取视频特征

热门文章

  1. 最近发现一个很好的开源电商项目给大家推荐一哈,值得学习!!!
  2. 怎么用手机和电脑同时预览PS设计稿
  3. 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(5)2021 华为海思(下)
  4. 探索路上永不止步:区块链驱动广告透明和安全
  5. VR购物丨抢占电商流量新阵地
  6. available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations:
  7. CODING —— 云原生时代的研发工具领跑者
  8. Transformer主干网络——T2T-ViT保姆级解析
  9. linux查看端口和防火墙的常用命令
  10. 世界风情园成北京最大废墟