EBOOT架构及流程

 

EBOOT的架构如图:

 

BLCOMMON:相当于EBOOT的一个基本框架,主要完成bootloader相关内存的分配,解析NK.bin文件并进行效验,初始化平台,通过网络下载image等功能。

OEM Code:主要是基于硬件平台,为BLCOMMON提供相应的接口函数,帮助完成相应的功能。

Eboot:一个小的网络协议栈,为网络下载image提供DHCP,TFTP,UDP等网络服务功能。

Network Driver:硬件平台的网络驱动部分,支持上层的网络功能。

Bootpart:为Flash设备提供分区功能,bootloader可以创建一个BinFS分区和一个文件系统分区。还可以用它来创建一个引导分区用来存放引导参数。

Flash Memory:硬件平台的Flash驱动。

 

EBOOT流程:

eboot(.nb0)是先被nboot之类的上电执行的代码拷贝到指定地址的ram中去,并执行。先是一段汇编,用以设置cpu时钟,屏蔽中断之类的,然后就是跳到main中去执行。这个函数直接调用BootloaderMain,并不再回头了。不过可以在这个main函数中打开led,以调试看eboot有没有跑到c函数的main中去。

所有的内容,包括下载nk和启动都是在BootloaderMain中实现。从大的方面说它调用了OEMPlatformInit,DownloadImage,OEMLaunch这3个功能函数。
OEMPlatformInit进入menu,让用户选择下一步所要执行的操作,并配置以太网控制器。如果是要下载nk则DownloadImage,如果从flash启动则加载并OEMLaunch(启动要从flash加载的话是在OEMPlatformInit中执行的)。
所有eboot的操作几乎都是通过 pToc(很多值是通过boot.bib来映射的,g_pBootCfg是pToc的一个成员)这个结构连接在一起的。它包括所有用到的配置,例如是否在down完之后写flash等。
修改boot.bib中FLSCACHE的值,它是所down的nk在ram中的开始地址和长度。
loader.h中定义了很多宏需要注意,例如ROM_RAMIMAGE_START和ROM_RAMIMAGE_SIZE的值应该和config.bib中的对应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值