C0EEBDA1

在梦中,我是有超能力的。。。

« 在VC.net下编译QT应用程序解决Redboot Project无法直接烧写到Flash运行的问题(续) »

解决Redboot Project无法直接烧写到Flash运行的问题

Redboot Project无法运行的原因:

1、 Redboot Project没有自己的中断管理机制,必须依靠Redboot对中断的管理

2、 Redboot Project的Entry Point在0xa0000000,而不是0xa0001000。最初设计成这样其实是希望可以节约一些空间,将0xa0001000之后的空间利用起来,现在看来当初的决定是错的

3、 目前eCos下的Flash驱动不完善,Redboot没办法具备Boot Script能力,所以,依靠Redboot将应用程序启动起来的方法目前是不适用的

4、 时间所迫,无法短期内完善Flash Driver,只能寄希望于其他的方式可以暂时解决Redboot Project运行问题

解决的办法:

1、 为其增加中断管理器,帮助其完成中断的功能

2、 由于不希望修改目前Redboot Project的Entry Point(因为这样做需要告知最终用户修改ld文件,而这个修改动作会带来不必要的麻烦),所以,只能依靠其他的程序来装载Redboot Project

可行性分析:

Redboot的Boot Script功能,可以在自身启动之后,自动从Flash加载某个指定的镜像到RAM,并跳转到程序Entry Point,继而将应用程序启动起来。

既然现在我们的Redboot无法自己完成这个功能,那么就给它来个功能定制,自己实现一个微型的“Redboot”,将自加载、应用程序加载、应用程序运行等合并到一起,实现这个功能单一的“BootLoader”。

具体解决办法:

首先实现一个微型的中断管理器。Redboot本身具备中断向量的管理能力,当Redboot Project被独立烧写到Flash后,这个管理器就消失了。所以,必须重写一个程序,该程序具备中断向量管理能力。假设这个程序叫做MiniBooter。

MiniBooter相当于是Redboot经过功能极度裁剪之后的变体,可以将应用程序直接加载至目标位置并跳转运行。

所以,目前最主要的工作就是完成这个经过裁剪的MiniBooter。

image

经过两次搬移动作之后,最后SDRAM内的情况:

image

其中,MiniBooter实现了Redboot的部分功能,帮助APPLE Program管理中断向量。

www.mculee.cn标签: , , ,

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense  theme by BokeZhuti

Copyright 2008-2009 C0EEBDA1. Some Rights Reserved. 备案号:京ICP备09020681号