Chinaunix首页 | 论坛 | 博客
  • 博客访问: 506155
  • 博文数量: 1345
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 14830
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-14 20:32
文章分类

全部博文(1345)

文章存档

2010年(1345)

我的朋友

分类:

2010-09-30 22:01:18

  在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中完成,源代码可以在” wince600publiccommonoakdriversethdbgblcommon”里找到。具体流程如图:   下面介绍一下具体步骤:   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请收藏或告诉您的好朋友.
阅读(174) | 评论(0) | 转发(0) |
0

上一篇: 糖醋对虾

下一篇: 松鼠鳜鱼

给主人留下些什么吧!~~