Chinaunix首页 | 论坛 | 博客
  • 博客访问: 138758
  • 博文数量: 35
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 289
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-21 20:39
文章分类

全部博文(35)

文章存档

2010年(35)

我的朋友

分类: 嵌入式

2010-06-21 21:44:34

bsp源文件为:AT91SAM9261EK_CE6.0_Source_BSP_v1.0.3(从官方网站下载)

 

Eboot的程序还是很复杂的,用了一天的时间整理整个Eboot的执行脉络。

主要的内容就是StartUp()和BootloaderMain()这两个函数,StartUp()已经在我的博客中说过了:

http://blog.chinaunix.net/u3/116083/showart_2257806.html

今天主要是讲讲BootloaderMain()和Eboot的执行脉络,以后再慢慢解析。

BootloaderMain()是BLCOMMON支持库中的接口函数。

BLCOMMON是一个库,其实现代码位于%_WINCEROOT%\Public\Common\Oak\Drivers\
Ethdbg\Blcommon目录下。它实现了Windows CE BootLoader的基本框架。这个库的工作为:将bootloader加载到RAM中执行、解压缩.bin文件、校验硬件平台的完整性、对加载的进度进行跟踪。在BLCOMMON阶段执行的过程中,主要使用OEM函数集。

BLCOMMON库的入口点为BootloaderMain函数,它有Startup汇编函数完成后跳转至该入口。BLCOMMON库将被BootLoader的程序链接在一起。在系统启动时,CPU首先执行StartUp函数,这是个由汇编实现的函数。StartUp函数主要的功能为:设置CPU工作频率、关闭看门狗、设置cache、设置RAM的刷新率、填写内存控制寄存器(通知CPU有效的数据总线引脚数)等。在StartUp完成任务后,就跳转到BootLoaderMain函数中。这个是由C语言编程实现的函数入口点。

关于BootloaderMain()的详细描述:我的博客会转载一篇文章来说明。

 

附件是EBOOT的执行脉络已经相关函数所在的文件的目录

阅读(542) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~