《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > DSP 代码HPI加载方法的研究

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公司.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。