WinCE Eboot中的BLCOMMON
作者: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相关推荐
- WinCE EBOOT中的BootPart分析
应该说BootPart算是微软提供的一个用于分区的模块,可以在EBOOT中使用.不过说实话,我很少使用它,知道有些厂商的BSP里面支持这个功能,而且也算是EBOOT的一部分,所以还是介绍一下.先看一下 ...
- WinCE EBOOT中的Boot Args与Driver Globals (转)
在EBOOT中包含的一个重要的缓冲区叫Driver Globals,它用于在设备驱动和WinCE OS之间共享数据.而在EBOOT中会用到的启动参数结构被称为Boot Args,是指用于EBOOT和W ...
- Eboot 中给nandflash分区实现
提到分区就不得不提到MBR,不得不提到分区表. 什么是MBR 硬盘的0柱面.0磁头.1扇区称为主引导扇区,NANDFLASH由BLOCK和Sector组成,所以NANDFLASH的第0 BLOCK,第 ...
- Wince6 Eboot中加入开机画面
昨天研究了一下wince开机时加入个性化的画面,折腾了一上午,不是花屏就是CE起不来--终于搞定,分享一下经验吧... Wince加入开机画面方法一般有以下两种: 1. 在文件中下定义一个常量大数组, ...
- WINCE BSP中source文件中的宏定义
在WinCE BSP中会看到很多sources文件,一般会和源代码放在同一个目录,当然不是绝对的.这些sources文件里面就是定义了一些宏,主要用于告诉Build.exe在编译源代码的时候应该如何编 ...
- WinCE OAL中的OEMIoControl函数
关于OEMIoControl函数,我在2008年1月份写过一篇blog叫"WinCE BSP中OAL层中的OEMIoControl介绍",已经比较详细的介绍了OEMIoContro ...
- WinCE OAL中的RAM定制函数
在WinCE系统中,Kernel是如何使用内存的,如何知道内存的大小?是通过config.bib文件的描述,我们会在config.bib文件中MEMORY段定义WinCE内核所占用RAM的起始地址和大 ...
- WINCE 系统中的同步机制
摘要 Windows® CE 是微软系列嵌入式平台所采用的操作系统内核.本文讨论了 WinCE 进程/线程之间的同步机制,给出了它们的典型应用场景.这些同步机制包括临界区.互斥体.信号量.事件.互锁函 ...
- WINCE开发中,EBOOT模式下,TFTP方式无法下载NK镜像的问题解决方案
2019独角兽企业重金招聘Python工程师标准>>> 使用自己修改的EBOOT,无法下载NK镜像,可以连接到PC机,PC机也可以检测到目标,就是在下载的时候卡住,显示的速度为0KB ...
最新文章
- .如何实现浏览器内多个标签页之间的通信?
- Android 求圆的面积
- lucene源码分析(5)lucence-group
- sendmail启动报错
- import cv2时ImportError: libjasper.so.1: cannot open shared object file: No such file or directory
- gojs 部分功能实现
- python内置函数面向对象_Pyhton——面向对象进阶二:类的内置函数补充、描述符...
- WebStorm 打开Node.js的代码提示功能
- stl源码剖析_《STL源码剖析》学习笔记
- 楔和的基本群|Seifert-Van Kampen定理的简单应用
- sql 删除一条记录_京东笔试题:如何实现 MySQL 删除重复记录并且只保留一条?...
- Spring 集成mybatis 3.几之后,打印sql语句到控制台
- ffmpeg下载及转码批量操作
- 计算机综合布线基本知识,综合布线系统基础知识学习
- PDE——delta函数
- vivo手机的坑-禁止微信浏览器网页点击图片,图片会自动放大
- PhotoShop一键修改4的倍数图片工具
- 如何批量一键下单寄快递
- 企业架构图之业务架构图
- 安装C3D v1.0提取视频特征
热门文章
- 最近发现一个很好的开源电商项目给大家推荐一哈,值得学习!!!
- 怎么用手机和电脑同时预览PS设计稿
- 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(5)2021 华为海思(下)
- 探索路上永不止步:区块链驱动广告透明和安全
- VR购物丨抢占电商流量新阵地
- available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations:
- CODING —— 云原生时代的研发工具领跑者
- Transformer主干网络——T2T-ViT保姆级解析
- linux查看端口和防火墙的常用命令
- 世界风情园成北京最大废墟