新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > DSP器件的现场可编程技术

DSP器件的现场可编程技术

——
作者:作者:中国电子科技集团公司 邢建泉 时间:2007-01-26 来源:《单片机及嵌入式系统应用》 收藏

dsp问世以来,以其强大的功能、合理的价格已经被设计者广泛应用。但不同于fpga器件的是,dsp并不是为现场可编程而开发的,因此,在嵌入了dsp器件的产品中,如果需要对产品性能进行升级而需要升级程序时,往往会由于现场可编程能力缺乏,而给用户造成麻烦。本文以ti公司的54系列dsp为例,通过对dsp开发过程的分析和代码生成机理的深入研究,找到了一种对dsp器件进行现场编程的方法。

本文引用地址:https://www.eepw.com.cn/article/21384.htm

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产品。



关键词:

评论


相关推荐

技术专区

关闭