原创 基于PC机与HPI接口的DSP程序直接下载法

2009-9-20 08:37 2241 6 6 分类: 处理器与DSP
作者:董 韬,李兵兵    时间:2007-01-24    来源: 
 
      

摘 要:利用TI 公司生产的DSP 芯片所提供的HPI 接口及其功能,提出了一种新的从计算机直接将DSP 程序下载DSP 芯片的RAM 中的方法,即将PC 机的打印机接口与DSP 芯片的HPI 总线直接相连,用来下载程序和传输数据。其中,只需要在PC 机端对下载程序代码进行一些处理就可以省掉DSP 下载仿真器以及DSP 芯片的外围下载辅助电路,从而只使用了DSP 中的RAM ,提高了处理速度,大大地减少了硬件设计的复杂度和开销。


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


关键词:DSP ; HPI ;下载



  在TI 公司生产的DSP 芯片中,程序的下载往往采用两种方式,即使用仿真器下载,或将程序烧写到FLASH ,再从FLASH 中调用程序。使用仿真器下载会提高工程的费用;而采用FLASH 下载,又会用到较多的外围电路,增加硬件设计的复杂度,给工程开发带来不必要的麻烦。这里将要讨论的是另外一种新的方法,即采用HPI 自举方式,通过PC机的打印机接口与DSP 芯片的HPI 总线,将程序从PC 机直接下载到DSP 芯片的RAM 中。这里只需要并口线连接,而不需要任何其他辅助器件,减少了硬件开支,节省了开发经费。经过实验证明该方法不但稳定可靠, 而且由于只用到了DSP SRAM ,从而大大地提高了处理速度。


 


HPI PC 机的接口形式



本文采用的DSP 芯片型号为TMS320VC5416 ,该芯片具有HPI 数据总线。在此处,该方法采取的是HPI-8 工作方式,体现在主机是通过8 位数据总线(HD0-HD7) DSP 之间交换数据信息。要通过HPI方式直接将程序下载到DSP SRAM ,并且通过自举方式运行程序,就要把DSP 芯片的MP/ MC 引脚接地,而且要把HINT 引脚与INT2 引脚短接,这样,在程序下载到芯片中后,程序才能够自动运行。



硬件连接原理如图1 所示。在这里,所用的PC机接口是L PT 接口(打印机接口) 。图中,DSP 8位数据总线( HD0-HD7) 与主机交换数据信息。



因为C54x DSP 16 位字节结构,主机与DSP之间数据传输必须包含两个连续的字节。图1 所示的HBIL 引脚信号确定传输的是第一个还是第二个字节,HBIL = 0 ,表示第一个字节; HBIL = 1,表示第二个字节。


20070124232227835.jpg


HCNTL0 HCNTL1 信号是地址输入控制信号,选择对HPIAHPIC HPID 寄存器进行访问。这里,HPIA ( HPI 地址寄存器) HPIC( HPI 控制寄存器) HPID( HPI 数据寄存器) DSP 芯片中自带的寄存器,用于存储主机的地址、控制和数据信 号。HCNTL1/ 0 的信号与功能如表1 所示。


20070124232321805.jpg



HR/ W 信号是读写信号,高电平表示读操作,低电平表示写操作。


HDS1 在这里用作选通信号,在它的下降沿,HBIL ,HCN TL0/ 1 HR/ W 进行采样,对数据进行控制。


由于HIN T 引脚与IN T2 引脚短接,DSP 芯片复位后,它的信号为低电平,在程序下完毕后,HIN T 信号可以被主机置为高电平,用来表示程序下载成功。



 HPI 内部寄存器的选择与设置



TMS320VC5416 具有3 16 位的寄存器:HPID ,HPIA HPICHPID 内寄存传输的数据;HPIA 内寄存数据表示数据要传输到的存储器的地址,在这里表示DSP 芯片内部RAM 的地址; HPIC是控制寄存器,对数据传输的状态进行控制。


20070124232408445.jpg


2 HPIC 的寄存器内容,是主机向HPIC中写入数据的格式。另外还有主机从HPIC 中读取数据的格式,这里不加以描述。表中的@表示不确定数,可以写入任何值。BOB 位表示选择第一字节或者第二字节为最高位,因为HPI 数据总线是以8bit 为单位传输数据;但计算机内部存储器和DSP内部RAM 都是以16 bit 为单位,所以,主机要把16位的数据分成两个字节发送,DSP 需要分清所传输字节应该放入存储单元的高8 位还是低8 位。当BOB = 1 ,第一个字节为低位;BOB = 0 ,第一个字节为高位。DSPIN T 表示的是主机发送给DSP 的中断信号,HIN T 表示的是DSP 向主机发送的中断信号。需要注意的是,主机写入HPIC 的第一个字节和第二个字节的内容必须相同。


HPID 用于寄存本次主机向DSP 内部RAM 写入的数据。


HPIA 中寄存的是HPID 中存储的数据将要写入的地址。



在每次选通信号HDS1 的下降沿,系统采样HPIC ,HPIA HPID 的数据,按照HPIC 中内容所要求的格式,HPID 中的数据写入HPIA 所制定的存储单元中去。


 


HPI 自举方式及其实现



DSP 芯片硬件复位时,如果检测到MP/ MC引脚的信号为低电平,则将从片内ROM FF80H开始执行Bootloader 程序。这个程序是生产时工厂固化到ROM 中的,Bootload 程序将开始循环检测DSP 芯片将要使用哪种自举方式。在外部硬件电路中把HIN T 引脚和IN T2 引脚短接,复位成功后,Bootloader 程序会检测到IN T2 为低电平,确定采用HPI 自举方式加载程序。这时,DSP 系统会清除RAM 0x007Fh 单元中的内容, 并且把0x007Fh 用作一个软件标志以显示HPI 自举加载是否已经完成。如果0x007Fh 中的内容发生了变化,则表示程序加载完成。同时,系统会把0x007Eh0x007Fh 中的数据作为程序的首地址开始运行程序。所以,在主机将程序直接下载DSP 芯片的方法中,程序下载完成后,要把程序首字节的存储地址的高16 位放入0x007E 单元, 而把低16 位放入0x007Fh 单元。例如,如果程序是从地址0x0080 开始运行, 则要在0x007Eh 单元中存入0000h , 0x007Fh 单元中存入0080h ,DSP 芯片就会从内部SRAM 0080h 地址开始顺序地执行程序。


 


下载程序的格式与生成方法



DSP 程序的编译通常都是在CCS (Code Composer St udio) 的环境下完成的,在编译完成后所生成的是*. out 文件,但此文件无法直接下载到DSP芯片的SRAM 中运行。解决这个问题,可以利用TI 公司提供的hex500. exe 文件转化工具,这个工具可以在CCS 文件夹的c5400\ cgtool s\ bin\ 目录下找到。hex500. exe 需要在dos 环境下运行。如果CCS 安装在C 盘下,do s 指令是:


c :\ ti \ c5400\ cgtool s\ bin\ hex<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />500 c : \ dsp . out- bscr 0e8000h - swwsr 7fff h - i - byte - o d : \test . hex - memwidth 16 - romwidt h 16 - boot -bootorg 0x8000


其中,dsp . out CCS 生成的需要转化的文件,test . hex 是转换后得到的文件,这个文件中包含着文件存储地址,文件长度等信息。*. hex 文件的格式如下:


00000000h :00 80 01 8C 77 18 0C00 F2 73 00 FC F4 95F4 95 ;


00000010h :F4 EB F4 95 F4 95 F4 95 08 F4 95 F7 BDF4 95 48 ;


00000020h :1D F0 30 FF F7 F4 95 F4 95 F4 95 F4 95 80 16 72 1D 00 ;


00000030h :16 F4 95 F4 95 71 10 00 12 F4 95 10 12 F000 00 ;


00000040h :01 80 12 F4 95 F4 95 10 17 F0 10 00 01 8017 F4 ;


00000050h :95 F4 95 F4 95 48 1D F0 30 00 7F F0 40 0080 F0 ;


上表中,前两个字节表示程序将要存储的首地址,这里首地址是0080h ;第三、四个字节表示的是程序的长度,这里是018Ch ;后边是实际应用程序的内容。然后将实际应用程序截取下来,按照所给地址写入DSP RAM ,再把首地址的值0080 写入0x007f单元,就可以让程序正确运行了。


 


下载程序流程



本方法通过对L PT 接口进行控制,来完成程序的下载。


程序工作流程如图2 所示。工作过程中, HPIC 的所有内容均设置为0 :BOB = 0 ,表示所传输的第一个字节为高字节;DSPIN T = 0 ,表示不对该位进行操作; HIN T = 0 ,清除中断。因为每次只能传输8 bit 数据,所以每个字的内容需要传输两次才能完成。在向HPID 写入数据前, 需要分两次向HPIA 写入地址信息,而后再分高8 位和低8 位把数据写入HPID。最后, 把程序首地址写入0x007Eh 0x007Fh 地址单元中,表示传输完毕。这里,程序首地址位0x0080h ,故而向0x007Eh 中写入0000h ,0x007Fh 中写入0080h 。然后,DSP 就会从0080h 地址单元开始执行程序。


20070124232640573.jpg


 


结束语



通过HPI 接口直接下载程序到DSP 芯片的方法,不仅可以使用在主机与DSP 的通信中,同样可以应用于单片机和其他控制芯片与DSP 的通信。经验证,这种方法稳定可靠,大大地减少了DSP 的开发的复杂度,减少了开发费用,不失为DSP 开发的一条新途径。



PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条