Bootrom功能改进经验谈
上,由用户在启动时选择,那么这个产品就拥有一机多能的特性,大大增强了产品的市场竞争力。
本文链接地址:http://www.oyaya.net/fanwen/view/148811.html
退而言之,即使硬件平台只适合于一种应用软件,将故障检测程序作为另一种应用软件,会带给产品测试和现场维修人员诸多的方便。
参考以上三点经验,在Bootrom中增加这项功能并非难事。以两个应用软件为例,在函数bootCmdLoop()中增加新命令“o”(other的编写),如下所示。
switch(*(pLine++)){
……
case 'o': /*启动另一应用软件*/
LoadAnoterApplicationImage();/*复制另一应用程序映象到起始地址为Entry的内存中*/
AutoSystemVersionSet();/*询问用户是否将另一应用软件设置为默认启动*/
go((FUNCPTR)Entry);/*从Entry地址开始运行*/
break;
……
}
图3
在Bootrom代码中定义一个变量defaultVersion,用于记录谁是
默认的启动软件,该变量保存在Flash等非易失媒质中。上电后,如果在倒计暑期间没有任何输入,系统自动启动defaultVersion指定的应用软件;否则,用户进入命令界面。如果键入“o”命令,Bootrom调用函数LoadAnotherApplicationImage()将另一应用程序映象复制到起始地址为Entry的内存区域,然后询问用户是否希望将另一应用程序设置为默认启动;如果用户回答“是”,更改defaultVersion值;否则,defaultVersion值不变。最后运行当前选定的应用软件。
上述的几点经验大部分是修改文件bootConfig.c的代码。因为bootConfig.c是一个公用文件,为了不影响其它底层软件的开发,建议将它复制到当前Bootrom开发目录下,并且在Makefile文件中增加定义:BOOTCONFIG=bootConfig.c。
嵌入式系统开发需要经常开辟新的思路,一些微小的简单改动通常能够带给产品新的功能和特征。启动代码是嵌入式系统的重要组成部分。笔者的以上四点经验在PowerPC处理器(MPC8260)平台和MIPS处理器(RM7000A)平台上得到了验证,希望对其它系统的启动代码的开发有所借鉴和启迪。
《Bootrom功能改进经验谈(第3页)》