| DSP器件的现场可编程技术 |
| 类别:单片机/DSP |
|                        来源:单片机及嵌入式系统应用 作者:中国电子科技集团公司 邢建泉          DSP问世以来,以其强大的功能、合理的价格已经被设计者广泛应用。但不同于FPGA器件的是,DSP并不是为现场可编程而开发的,因此,在嵌入了DSP器件的产品中,如果需要对产品性能进行升级而需要升级程序时,往往会由于现场可编程能力缺乏,而给用户造成麻烦。本文以TI公司的54系列DSP为例,通过对DSP开发过程的分析和代码生成机理的深入研究,找到了一种对DSP器件进行现场编程的方法。          1 54x DSP的开发          CCS集成开发环境是TI公司针对其全系列DSP开发的仿真编译器,可开发目前TI公司几乎所有类型的DSP芯片。在CCS集成开发环境下,54x DSP的开发一般分为以下几个步骤:程序编写、程序编译、COFF文件生成、仿真运行、HEX文件生成、程序存储器烧写和上机运行等,具体流程如图1所示。                    在源程序正确的情况下,可编译生成COFF(common()bject File Format)文件,其后缀为.out,可用于进行硬件仿真运行,但不能直接作为程序烧写。如果要将程序写入DSP的外部程序存储器,首先要根据.out文件生成HEX文件。          HEX文件的生成需要调用专用的生成程序HEX500,在WIN32环境下执行HEX500*.cmd命令,生成需要的*.hex文件。按照命令文件*.cmd中的选项,可设置存储器的类型、位数、起始地址,程序的人口地址、引导方式和hex文件的格式等。下面是一段用串口对8位串行EOPROM进行引导的命令文件的例子。          123.out /*输入文件名*/     -i /*INTEL格式*/     -map 123.mxp     -o 123.hex /*输出文件名*/     -memwidth 8 /*8位存储器*/     -romwidth 8 /*输出文件为字节*/     -bcrotorg 0x0000 /*外部存储器开始地址*/     -bootorg serial /*串口装载*/     -e_main /*主程序人口*/     SECTI()NS     {.text;boot     } /*整个程序作为一段引导*/          2 HEX文件          CCS的编译器和链接器生成COFF目标文件。COFF目标文件是二进制格式,有利于模块化编程和更高效的程序片断和目标系统存储器管理。但是大多数的编程器不接受COFF文件。可以用HEX转化程序将其转换为以下5种标准的ASCII十六进制格式:          ◇ASCII-HEX,支持16位地址}     ◇扩展的TeKtronix;     ◇Intel MCS-86;     ◇Motorola-s,支持16位、24位、32位地址;     ◇TI Tagged,支持16位地址。          仍然用前面的例子,命令文件生成的HEX文件片断如图2所示(用UltraEdit-32打开)。               在命令文件中,也可以根据具体应用情况的不同规定不同的参数,例如,当使用并行存储器作为程序存储器时,则引导装载命令就要改为parallel。具体参数设置见参考文献[1]。          3 硬件编程接口          为仿真调试的方便,54x DSP器件都具有仿真编程用的JTAG接口,其引脚定义如图3所示。                    通过JTAG口,可以与DSP建立通信联系,并通过特定的程序,控制DSP的内部单元,让DSP执行预定的操作.这是DSP实现现场可编程的硬件基础,如图4所示。               4 现场可编程的实现方法          由于DSP的程序一般存储在外部存储器之中,因此,现场可编程的实现就是要将新程序通过DSP写入存储器。在以前,由于存储器的烧写电压普遍高于其工作电压,只能通过编程器烧写.随着技术的发展,现在许多E2PROM、Flash存储器等都可进行电擦写,擦写电压和工作电压一致,因此完全可以进行工作电压下的编程。          对DSP进行现场编程,需要用到的器材有计算机和DSP仿真器;需要用到的软件有CCS集成开发平台、UltraEdit-32程序和DSP现场编程程序。具体操作步骤如下:          ①在CCS集成开发环境下,将程序编译完成,并在目标板上运行通过。     ②打开程序存储器窗口,根据程序的起始、结束地址,将整个程序代码存储为一个数据文件(dat文件)。     ③生成hex文件。     ④用UltraEdit-32程序打开hex文件,找出程序人口值和程序长度值以及程序开始地址值.     ⑤调入烧写程序,并装载入系统芯片.     ⑥将程序入口值、程序长度值、程序开始地址值填人现场编程程序中并编译通过。     ⑦将存储的程序代码调入数据空间的适当位置(存放位置自定)。     ⑧运行现场编程程序,通过DSP将代码写入外部程序存储器。          以上步骤仅在编程开始时进行,一旦编程开始,就可以连续对多个器件现场编程。          DSP现场编程程序的编制也很简单。下面的参考程序是根据前面的命令文件参数编写的,并经仿真验证通过。设定Mc·BSP2口以SPI方式引导串行E2PROM。          .text     …… ;McBSP2口SPI初始化,主动方式     STM #1000H,ARl;从1000H开始10个字为程序    代码前的数据     ST #08AAH,* ARl+ ;引导头     ST #0018H,* ARl+     ST #O003H,* ARl+     ST #0800H,* ARl+     ST #D010H,* ARl+ ;不重要     ST #000lH,* ARl+     ST #0C428H,* ARl+ ;主程序人口为1C428H     ST #2340H,* ARl+ ;程序代码总字数2340H     ST #000lH,* ARI+     ST #0C000H,* ARl+;程序开始地址1C000H     STM #(1000H+0AH+2340H),ARl     ST #O,* ARl;最后放结束标志#0000H     STM #O,ADDRESS ;地址寄存器清零     STM #1000H,AR2 ;程序代码开始地址     STM #(0AH+2340H+1),BRC     RPTB LOOP ;写循环     LDM ADDRESS,A     SFTL A,-8     AND #OOFFH,A     OR #0200H,A     STLM A,AR3 ;写指令+地址高位     LDM ADDRESS,A     SFTL A,8     AND #OFF00H,A     LD * AR2,B          SFTL B.-8     AND #0FFH,B     ADD B.A     STLM A,AR4 ;地址低位+数据字节     LDM ADDRESS.A     ADD #1.A     STLM A,ADDRESS ;E2PROM地址+1     CALL WRITE ;写E2PROM子程序     LDM ADDRESS,A     SFTL A,-8     AND #00FFH,A     OR #0200H,A     STLM A,AR3 ;写指令+地址高位     LDM ADDRESS,A     SFTL A,8     AND #0FFOOH,A     LD *AR2+.B;程序代码地址+1     AND #0FFH,B     ADD B.A     STLM A,AR4 ;地址低位+数据字节     LDM ADDRESS,A     ADD #1,A     STLM A,ADDRESS ;EOPROM地址+1     CALL WRITE;写EOPROM子程序     LOOP:NOP     .end          结 语          本文介绍的DSP现场可编程方法,经实际应用效果良好,其方便灵活的特点增强了现场处理问题的能力。由于其完全由软件实现,因此这种方法同样也适用于其他品牌的DSP产品。           |
- pic16单片机应..
- 2008-1-9
- 基于单片机的某车型..
- 2008-1-7
- 基于ARM的FPG..
- 2008-1-7
- 基于单片机的电热水..
- 2007-11-15
- 一种基于单片机的汽..
- 2007-11-15
- 基于单片机的电子导..
- 2007-11-8
- 51单片机边沿触发..
- 2007-11-8
- 如何选择细纱机主电..
- 2007-11-5
- 单片机编程技巧
- 2007-9-14
- 空压机变频改造技术..
- 2007-9-3
- 运用定点DSP实现..
- 2007-8-7
- 基于TMS320C..
- 2007-8-9
- 一种用于图像认证的..
- 2007-7-29
- TMS320F20..
- 2007-8-9
- 多DSP系统互连方..
- 2007-8-9
- C5402 DSP..
- 2007-8-9
- 具有高可靠性的高速..
- 2007-8-9
- 基于DSP的实时M..
- 2007-8-7
- 带ARM核的双CP..
- 2007-8-9
- 基于TMS320V..
- 2007-8-9





