DSP程序在线升级报告(本人觉得最给力的资料) 下载本文

内容发布更新时间 : 2024/5/30 19:41:09星期一 下面是文章的全部内容请认真阅读。

DSP程序在线升级

唐俊松

tangjunsong@zju.edu.cn

2015/12/04

1. 引言

一般而言,DSP程序更新是在CCS环境下通过JTAG接口来实现的。但JTAG烧写程序只能实现一对一烧写(即电脑到DSP),且不能远距离烧写程序。而当产品发布后或需要同时升级多个DSP程序时,通过JTAG烧写程序则很难实现。

在线程序升级的主要思想是通过串口通信更新程序,通过串口通信可实现程序远程升级且可同时实现对多个DSP的程序更新,这有效地解决了JTAG烧写程序所存在的弊端。

PCJTAG上位机RS232DSP DSP ? ? ? DSP ? ? ? DSP1. 通过JTAG更新DSP程序2. 通过串口(RS232)更新DSP程序图1.1 通过不同方式实现DSP程序更新

2. 程序在线升级的基本思想

基于串口通信的程序在线升级功能框图如图2.1所示,底层程序(Prog Local)和应用程序(ProgApp)分别由两个独立的CCS Project产生。

底层程序(Prog Local)是产品发布前通过JTAG烧写固化在DSP指定Flash空间中的程序,不允许用户修改和擦除,主要用于实现与上位机的通信,同时在需要升级程序时将上位机发送过来的程序代码烧写到FLASH中。

应用程序(ProgApp)是可以更新的程序。通过CCS编译产生程序代码文件(hex),然后通过RS232通信将程序代码发送到DSP,继而由底层程序(Prog Local)将应用程序代码烧写到应用程序所对应FLSH空间(Prog App)中。

CCSProject ACCSProject LJTAGHex文件Prog Local上位机(HMIS)RS232Prog AppDSP

图2.1DSP程序在线升级功能框图

在线升级程序流程图如图2.2所示。 DSP上电复位后先运行底层程序,在底层程序中判断是否需要升级,如不需要升级,则跳转到应用程序执行。如需要升级,则擦除应用程序对应FLASH区,并将升级代码写入到应用程序FLASH区中。

Begin底层程序与上位机通信是否升级?是接收升级程序代码否跳转应用程序将升级程序代码烧写到FlashEnd图2.2DSP程序更新流程图

3. 在线程序升级的具体实现

3.1 FLASH分配

要实现程序在线升级,必须使底层程序和应用程序相互独立。如图2.1所示,本项目将底层程序(LocalProgram)配置在FLASH A中,应用程序(Application Program)配置在FLASH E中,从而实现底层程序与应用程序的独立。实现程序相互独立需通过配置cmd文件完成,具体配置方法见附录1。

Local Program (FLASH A)Application Program (FLASH E)DSP

图3.1 DSP FLASH分区示意图

3. 2 应用程序更新代码产生

需要更新的应用程序代码是通过CCS Project A编译产生的,但CCS编译生成的是具有模块化格式的目标文件(.out文件),该文件中的代码和数据分别存放在不同的段中,因而不能直接用来烧写Flash,需将其转换为能识别的数据格式(hex文件)(hex数据文件格式详见附录4)。生成hex文件后,通过上位机读取hex文件数据,并将数据通过RS232通信发

送至DSP。

CCS自带工具hex2000.exe可实现.out文件到.hex文件的转换。(转换方法见附录6)

CCSProject A编译A.outHex2000A.hexRS232DSP 图3.2 应用程序代码产生方法