DSP 代码HPI加载方法的研究
2009-08-10
作者:罗书克1,张元敏1,张亚科2
摘 要:应用TMS320VC5410A的主机接口,结合单片机丰富的I/O资源以及单片机操作主机接口的简易性,介绍了在DSP系统复位时,单片机通过主机接口加载DSP代码的详细过程。
关键词:VC5410A;单片机;HPI;代码加载
随着科技的发展,许多嵌入式产品都在朝着小型化、节能化的方向发展。如何应用现有的资源,减少元器件的数量也成为许多厂家技术革新的方向。DSP作为一种高速的处理器在许多电子产品中都有所应用。所以根据产品的资源,选择一种合适的代码加载方式也是减少成本的一种方法。本文依据5410A来介绍通过HPI接口加载代码的方法,适合于含有单片机的DSP系统中。
5410A有5种加载代码的方法,分别是:HPI引导加载、8/16位并行引导加载、8/16位标准串行口引导加载、8位串行EEPROM引导加载和I/O引导加载[1-2]。
HPI加载就是通过DSP的HPI接口,由外部主机把DSP的运行代码写入DSP的程序空间,写完之后,DSP从程序的起始地址开始执行代码[3]。下面主要介绍HPI加载的过程。
1 DSP固化的BootLoader程序
当DSP上电复位时,如果DSP的MP/#MC引脚为低电平,便跳转到其内部固化的BootLoader程序运行,选择相应的加载模式,直到代码加载完毕才跳出引导程序[4-5]。其中HPI加载模式的流程如图1所示。
由图1可以看出,DSP进入HPI加载模式有两种方式:一是通过判断INT2中断标志位是否激活;二是通过向0x007E和0x007F(0x007E和0x007F地址中存放HPI加载时程序运行的入口地址)写入有效的地址,因为bootloader在运行时,首先清零0x007E和0x007F两个地址中的数据,然后才对加载模式进行选择,当没有查询到有效的加载模式时,bootloader程序继续向下执行,检查0x007E和0x007F是否为有效地址,是则跳转到该地址执行程序,不是则继续对部分加载模式进行查询。笔者根据使用的5410A平台,采用第二种方法[6]。
2 主机操作过程
5410A的HPI接口是增强型的,它允许主机访问整个片内RAM空间,并且主机和DSP对这些空间的访问是共享的。单片机对HPI接口的操作实际上就是对HPI的3个寄存器HPIC、HPIA、HPID进行操作的过程[7]。单片机通过HPI口向DSP内部RAM写入数据的程序流程如图2所示。
单片机程序首先写HPIC寄存器,高低字节都是09H,清HINT中断,配置第一个字节传输的是低字节,然后向HPIA中写入地址值(起始地址-1),通过自增方式向HPID寄存器连续送入数据[8]。因为HPI在自增方式下写数据时,地址先加1,然后再写,所以开始配置的地址值要减1后再送HPIA寄存器。在自增方式读时,是先读出数据,然后地址再加1。
在这里,DSP的代码作为单片机代码的一部分,即把DSP的bin格式代码添加到单片机bin格式代码的某个空闲空间。单片机开始工作时,连续地从这个空间读取数据,然后通过HPI口写入DSP的内部RAM中。数据写完后,向DSP的数据空间7EH、7FH写入DSP程序运行的起始地址,此后单片机就可以进行其他工作,DSP的引导程序通过判断7EH、7FH中的有效数据、跳转的相应的起始地址,开始执行代码。
需要注意的是,DSP在编译时,CMD文件中设置的程序的起始地址要和DSP的 HPI加载的起始地址相同。
3文件格式转换
DSP的应用程序编译链接后,生成一个out文件,这个文件包含有其他一些附件信息,所以不能通过主机直接加载到DSP中,要通过一个CMD文件把其转化为hex格式,然后再转化为bin格式,最后把bin格式文件中的有效数据添加到单片机编译生成的bin 文件后面,单片机加载到DSP内部的数据便从该地址开始。CMD文件内容如下:
dsp.out
-o dsp.hex
-i
-memwidth 8
-romwidth 8
把通过CCS编链接生成的out文件(假设为dsp.out)和上述CMD文件(假设为debug.cmd)以及hex500、hex2bin.exe(CCS自带)4个文件放在同一个文件夹中(假设在 d:dsp 文件夹下)。在DSP环境下,运行如下命令:
d:回车
cd dsp 回车
hex500 debug.cmd 回车
便可以生成相应的dsp.hex文件。随后通过执行hex2bin dsp.hex 指令,可以把hex格式的文件转化为需要的bin文件。
通过单片机对DSP的主机接口进行读写,来实现DSP代码的加载。现在好多单片机的内部FLASH空间都达到或超过64KB范围,如华邦、SST系列等有足够的空间来存放DSP的数据代码,并且单片机在上电加载完DSP代码之后,可继续进行其他工作,互不影响,这样既节省了芯片资源,又可以充分利用单片机的现有资源进行其他工作。
参考文献
[1] Coding of speech at 8kb/s using conjugate-structure algebraic-cod excited linear-prediction. ITU-T Recommendation G.729, March 1996.
[2] SALAM R,LAFLAMME I C. Reduced complexity 8kb/s CSACELP codec for digital simultaneous voice and data[J]. IEEE Communication Magazine, 1997, 9: 56-63.
[3] 张军,赵静.DSP芯片的特点及应用[J].现代电子技术, 2001, 11: 7-81.
[4] TMS320C54X DSP Reference Set.TI公司
[5] TMS320VC5409数据手册.TI公司
[6] X5043数据手册.Xicor公司
[7] 畅洪亮,程维,蔡学敬. TMS320VC5402 HPI接口与PCI总线接口设计[J].单片机与嵌入式系统应用,2006, 10.
[8] TMS320VC5402A/VC5409/VC5410A/VC5416 Bootloader.TI公司.