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。
经过两次搬移动作之后,最后SDRAM内的情况:
其中,MiniBooter实现了Redboot的部分功能,帮助APPLE Program管理中断向量。

