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中去。