一种新型DSP软件在线升级方法的研究与实现

时间:2010-05-14来源:网络
软件在擦除(A)区的过程中如果出现异常(如系统掉电),将导致(A)区中的应用程序破坏。然而,此时(B)区中的更新软件是有效的,当系统重新上电运行时,BOOT程序会将(B)区中的更新软件拷入(A)区中,然后从(A)区开始运行,从而可以有效地解决常用版本更新方法存在的意外风险问题。Boots程序关键函数如下:
void EraseFlashPages(void) //用于擦除Flash中所指定区域;
void ProgramRow(unsigned char*ptrData,uReg32 SourceAddr)
//用于向指定的地址写入ptrData所指向的数据;
void ReadRow(unsigned char*ptrData,uReg32 SourceAddr)
//用于从指定的地址读取数据到ptrData所指向的位置;
void SetFlag(unsigned long FlagAddr) //用于向指定的
地址写入有效标志;
void ClearFlag(unsigned long FlagAddr) //用于擦除指定地址的有效标志。
3 DSP软件更新方式与更新方法
3.1 DSP软件更新方式

为了进一步提高系统更新软件的可靠性、灵活性,本文提供了3种更新方式:(1)在下载更新程序结束后,立即执行更新操作;(2)在下载更新程序结束后,PC机通过通信发送更新命令再执行更新操作;(3)在下载更新程序结束后,在系统下一次上电复位后,再执行更新操作。基于VC编写的DSP软件更新方式选择界面,如图3所示。

其中,更新方式(1)适用于对可靠性要求不是很严格,而且马上需要更新的场合,该方法与现有的、常用的在线升级方式相似,但克服了其存在的不足;更新方式(2)可以让客户根据实际系统的运行需要来选择更新软件的时机,因此可以在合适的时间内进行软件更新,将更新的风险进一步降低;更新方式(3)适合于对可靠性要求非常严格的场合,在系统断电后,重新上电复位后进行更新。更新方式选择关键函数如下:
void UpgradeAppCode(void); //用于执行更新程序操作;
void FW_Download(unsigned char DataBuffer, unsigned char RWflag); //通过通信接口,将下载的新程序保存到应用程序更新版本区域。
3.2 更新版本程序下载流程
如果软件需要更新时,首先将更新版本软件下载到应用程序更新版本(图1(B))中,在更新版本软件的下载过程中,对更新版本进行校验,如果更新版本下载成功,则在指定的地址中设置更新程序是新的、有效的标志位;反之,则设置无效的标志位。BOOT程序中更新版本程序下载流程如图4所示。


本文提出了一种高可靠的软件版本在线升级方法和3种更新方式,该软件具有实现简单、更新方式灵活、程序可靠性高等优点,可应用于数字控制芯片领域。

1 2

关键词: DSP 软件 法的研究 在线升级

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版