DSP系统软件在线升级机制的研究和实现
出处:互联网 发布于:2011-06-06 14:00:53
随着IT技术的迅猛发展,数字化技术已被广泛应用到国民经济的各个领域。DSP是TI公司性能的一种系列芯片,也是目前、功能强大的32位定点系列芯片。它既具有数字信号处理能力,又具有强大的事件管理能力和嵌入式控制功能,可以将程序直接写入片内运行,开发和使用都非常方便。自推出以来,已被国内的各行业的开发工程师用于开发各种先进的监控产品。各种监控产品在线运行时,难免会发现和需要处理各种意料不到的问题,有必要及时升级相应的程序。因此,本文探讨了如何利用设备进行DSP程序升级方法。
在实际应用中,可以根据Flash的大小、程序代码长度等因素灵活调节。如果采用dsPIC33FJ64GP710控制器,其Flash空间范围为0x0000-0xFFFF,每页的大小为0x100,则dsPIC33FJ64GP710的Flash空间地址典型分配如表1所示。应用程序更新版本和正常版本的Flash空间大小都为0x7000,而且,不论是应用程序正常版本或是更新版本,其个运行的指令都是跳转到BOOT程序,其的2组地址都用于存放新的、有效的标志位。所以,当更新升级程序时,仅需要将应用程序更新版本中的更新程序整体拷入应用程序正常版本中即可,而不需区分其中的标志位、跳转指令和程序本体,简化了BOOT程序的设计。
2 BOOT功能的设计与实现
本软件程序设计主要分为两部分:应用程序的设计和BOOT程序的设计。出厂时,应用程序的正常版本放在图1中(A)区,而BOOT程序放在图1中(C)区。更新时,仅对应用程序进行更新。
系统上电复位时,软件首先跳转至BOOT程序开始运行。BOOT程序首先检测图1(B)区中的更新版本程序是新的、有效的,BOOT程序才会擦除图1(A)区中的正常版本,再将图1(B)区中的更新版本拷入图1(A)区中,覆盖正常版本后在图1(A)区中设置正常版本有效标志位;否则BOOT程序将终止软件版本的更新,并设置更新失败标志。然后软件将从图1(C)区中BOOT程序跳回图1(A)区中运行应用程序的正常版本。因为只有在更新版本有效时,才会擦除正常版本,因此,更新版本和正常版本不会同时无效。系统软件主程序设计具体流程如图2所示。
软件在擦除(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所示。
本文从工程的实际需要出发,分析和阐述了DSP在线升级的步骤和方法,有效解决在线远程运行系统的程序升级的难题,对其他类似系统的程序升级也具有借签意义。
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 模糊逻辑在 DSP 上实时执行2023/7/25 17:13:30
- 多速率DSP及其在数模转换中的应用2023/6/12 15:28:52
- 使用 DSP 加速 CORDIC 算法2023/3/29 15:46:30
- 高速DSP系统的信号完整性2022/9/26 16:45:38
- 自适应噪声消除系统的实现2022/1/17 17:51:17