一种基于TMS320C6205 DSP的在线升级方法
2012-08-14陆平林
陆平林
(数据通信科学技术研究所,北京 100191)
0 引言
DSP在线升级是指脱离集成开发环境,利用DSP系统已有的通道,在运行状态下对DSP软件进行升级,在线升级大大提高了DSP系统的可维护性和可扩展能力。DSP在线升级的一种方法是直接写Flash[1],DSP内原有应用程序加载到RAM上运行,升级文件直接写入Flash,覆盖原有应用程序,DSP复位后即可运行新的DSP程序。这种方法简单易行,但可靠性差,一旦升级文件有误,或升级过程中意外掉电,会造成系统瘫痪,需采用新的设计思路,实现可靠的在线升级功能。
实现 DSP的可靠在线升级的基本思路是:把DSP程序分为固化的用户引导程序 Userbootloader(区别于DSP厂商固化的bootloader)和可升级的应用程序App,Userbootloader程序在最初用仿真器或编程器写入,之后由 Userbootloader支持在线升级,有以下两种方案:
第一种方案是采用乒乓存储,原有DSP程序留有备份,升级程序和原有程序都存在Flash上,升级的同时在Flash置标志位,重启后Userbootloader通过读取标志,选择加载App[2-4]。这种方法需要有多余的Flash空间,可能会增加硬件成本。
第二种方案是 Userbootloader直接将新应用替换原有应用,升级完成后,加载 App到 RAM,跳转到应用入口执行[5-6]。对于这种方案,通常对App的引导是在加载App代码后跳到_c_int00[6],但因为Userbootloader和 App是两个不同工程,这样要求App工程在链接时,必须设置其_c_int00和Userbootloader工程的_c_int00运行地址一致,同时,App的中断向量表也需要进行重新定向。
基于C6205DSP的PCI-E卡,采用上面的第二种方案,提出了一种在线升级方法,对App的引导是在加载 App代码后,Userbootloader跳到地址 0开始执行,对App没有上述要求,提高了升级系统的通用性、灵活性和可维护性。……
