加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

也说eboot流程

发布时间:2020-12-15 18:31:27 所属栏目:百科 来源:网络整理
导读:? ? ?这一段时间利用工作之外的时间调试了一把eboot(wince5-s3c2440)。还好eboot终于可以用了,就是烧写太麻烦,256k要烧8分钟之多(通过jtag)。 ????? wince5中的eboot默认是用的cs8900的网卡,而我们现在板子上的是dm9000。幸运的是从网上down了一个这
? ? ?这一段时间利用工作之外的时间调试了一把eboot(wince5-s3c2440)。还好eboot终于可以用了,就是烧写太麻烦,256k要烧8分钟之多(通过jtag)。
????? wince5中的eboot默认是用的cs8900的网卡,而我们现在板子上的是dm9000。幸运的是从网上down了一个这么一个dm9000实现的代码。下面具体说下eboot的代码和修改流程。
????? bootloader的作用无非就是将nk从pc端先down到ram再写到指定地址的flash,下次启动的时候直接从flash上读到ram并跳到ram中去执行,以启动nk。
????? eboot(.nb0)是先被nboot之类的上电执行的代码拷贝到指定地址的ram中去,并执行。先是一段汇编,用以设置cpu时钟,屏蔽中断之类的,然后就是跳到main(smdk2440srcbootloaderebootmain.c)中去执行。这个函数直接调用BootloaderMain,并不再回头了。不过可以在这个main函数中打开led,以调试看eboot有没有跑到c函数的main中去。
所有的内容,包括下载nk和启动都是在BootloaderMain(publiccommonoakdriversethdbgblcommonblocommon.c)中实现。从大的方面说它调用了OEMPlatformInit,DownloadImage,OEMLaunch这3个功能函数。
????? OEMPlatformInit进入menu,让用户选择下一步所要执行的操作,并配置以太网控制器。如果是要下载nk则DownloadImage,如果从flash启动则加载并OEMLaunch(启动要从flash加载的话是在OEMPlatformInit中执行的)。
????? 所有eboot的操作几乎都是通过pToc(很多值是通过boot.bib来映射的,g_pBootCfg是pToc的一个成员)这个结构连接在一起的。它包括所有用到的配置,例如是否在down完之后写flash等。
???? 以下说下我在调试eboot时候的修改
???? 首先InitEthDevice。由于现在要通过dm9000来实现eboot,所以要改下这个函数中的设置的几个功能函数:
pfnEDbgInit????? = DM9000DBG_Init;
pfnEDbgGetFrame? = DM9000DBG_GetFrame;
pfnEDbgSendFrame = DM9000DBG_SendFrame;
也就是说在dm9000中只要实现这3个功能函数就ok了。在调试的时候pBaseIOAddress也是个值得关注的地方。
????? 接下来是修改boot.bib中FLSCACHE的值,它是所down的nk在ram中的开始地址和长度。
loader.h中定义了很多宏需要注意,例如ROM_RAMIMAGE_START和ROM_RAMIMAGE_SIZE的值应该和config.bib中的对应。

本文出自 “bluefish” 博客,请务必保留此出处http://www.voidcn.com/article/p-vvdsgylf-bhr.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读