一种利用HPI接口实现DSP应用程序远程更新的方法
扫描二维码
随时随地手机看文章
引言
随着智能电网的建设、实施和物联网的普及应用,越来越多的终端设备通过网络实现远程的数据采集,这些数据终端数量众多,分布范围广。当这些终端设备中的MCU应用软件发现BUG,或需要对MCU应用软件进行升级则是一件非常麻烦、艰巨的任务。如果能够通过网络或串行接口实现MCU应用程序的远程下载,将会带来方便。本文介绍一种DSP应用程序的远程下载技术。
1 TMS320VC5402及其HPI接口简介
TMS320VC5402是TI公司为实现低功耗、高性能实时信号处理的定点16位DSP,它采用改进型哈佛结构,具有很高的运行速度,非常适合在信号处理方面的应用,如滤波、频谱分析等场合。其突出的优点已经使它在通信、语音、仪器仪表、电力测控终端等领域得到广泛应用。
TMS320VC5402的应用程序在其内部的RAM中运行,因此,在上电时需要利用HPI接口将程序传送到内部RAM中,TMS320VC5402的HPI是增强型8位主机接口。HPI即主机接口,它实际上是一个8位的并行接口,可以和任何一个外部的8位并行接口连接,在大多数情况下这个外部的8位并行口可以是其他MCU的8位I/O口。对于TMS320VC5402来说,这个MCU就是“主机”以下简称为主MCU。当TMS320VC5402与主机传送数据时,HPI能自动将传送来的8位数据组合成为16位数据,并传送到TMS320VC5402内部指定地址的RAM单元中,代码传送完毕后,主MCU再传送DSP应用程序的入口地址。传送结束后TMS320VC5402即可从指定的地址开始执行应用程序。
2 HPI与主机接口的技术实现
主MCU和TMS320C5416的连接示意如图1所示,图中8位数据线用来实现DSP与主机之间的数据传输,控制信号线用来指定进行的操作。
HPI包含3个内部寄存器,分别为:HPIC、HPIA、HPID。HPIC是一个16位的内部控制寄存器,HPIA是16位的地址寄存器,HPID是数据寄存器。由于HPI接口的数据线是8位的,故主MCU在读写HPI寄存器时,每次必须按2个字节操作,字节的高低顺序由HPIC设定。而主MCU要写HPIC时,第1个字节和第2个字节的内容必须是相同值,专用的HBIL引脚信号用来确定传输的是第1字节还是第2字节。HPIC的BOB位决定是第1个字节还是第2个字节放置在高8位。HCNTL0/1用来说明哪个HPI的内部寄存器被主机访问。具体说明如表1所列。
HDS1、HDS2是两个数据选通信号,HAS是地址锁存信号,HCS是HPI接口的选中信号,而HR/W是读/写控制信号。详情及HPIC寄存器各位的用途请参考TMS320VC5402技术手册,这里不再赘述。
主MCU通过HPIC、HPIA、HPID寄存器与TMS320VC5402进行数据交换,数据交换的过程如下:
①初始化HPIC;
②把地址写到HPIA中;
③通过HPID读或写数据。
一般情况下,对DSP的HPIC进行初始化后,无须再对其进行初始化,其余工作由主MCU完成。主MCU和TMS320VC5402的连接图如图1所示。
用8051单片机作为主MCU实现DSP应用程序远程下载的实现方案中,主MCU使用的是C8051F236,用C8051F236的P1口作为数据线与DSP的HPI接口连接,C8051F236的P2口分别作为HPI接口的控制信号线,P0.5连接到DSP的复位引脚。C8051F236的串行接口扩展MAX485,以便通过RS485串行接口接收PC机传送的DSP应用程序,当然也可以为主MCU扩展网络接口,通过网络传送DSP应用程序。
扩展的I2C总线接口EEPROM存储器AT24C1024用于存放DSP应用程序的HEX文件,AT24C1024的容量为256 KB,对于一般应用程序的HEX文件是够用的。工作时PC机利用通信接口将DSP的应用程序和程序的入口地址传送给主MCU,并在EEPROM中存放。然后主MCU控制DSP复位,进入引导工作方式,主MCU读取存放在AT24C1024中的HEX文件,经解析后产生机器码,并逐字节通过HPI接口传送给DSP,完成程序的更新。
TMS320VC5402在片上ROM中固化了引导程序,当DSP工作在微计算机模式(MP/MC=0)下,上电复位后会自动执行引导程序,引导程序会初始化数据存储区的007EH和007FH两个单元,使其初始值为0,然后检测引导模式。首先检测当前是否是HPI引导模式,在确认引导模式后,按照相应的操作自动从HPI接口传送用户代码到内部程序存储器。在完成用户代码引导后,主MCU执行写入口地址操作,即将应用程序的入口地址写入到007EH和007FH。如果TMS320VC5402检测到007EH和007FH内容的变化后,马上从入口地址处开始运行用户程序,引导过程结束,DSP正常运行应用程序。
3 主MCU软件设计
涉及HPI功能的主MCU软件设计包括两个方面:一是HPI接口的访问;二是HEX文件的解析。
(1)HPI接口软件设计
在对HPI接口访问时,一般首先要通过写入控制字到HIPC寄存器中,以设置HPI的工作方式。但在大多数情况下,使用HPIC的默认值即可,故不需要专门对HPIC进行操作,程序中仅需对HPIA和HPID进行操作。以下为对HPIA进行写操作的程序,将需要操作的存储器的地址传送到HPIA中。为简单起见,程序已作了简化处理:
将存储器地址传送到HPIA后即可传送程序的机器码,程序结构与上述类似。需要注意的是,在通过HPID读/写DSP内部的存储器时,被读/写存储器单元的地址由HPIA指定,并且可以实现HCNTL0、HCNTL1设置为读/写HPID时HPIA的值自动加1,这样就不需要每次读/写HPID之前先传送地址到HPIA中,简化了程序设计。
(2)DSP代码下载程序设计
DSP应用程序代码通过串行接口传送到主MCU并保存在EEPROM中后,主MCU即可在任何需要的时候将代码下载到DSP中。一般来说传送的DSP应用程序是HEX文件。HEX文件是一个文本文件,它以记录的方式存放应用程序的机器码及其地址。因此主MCU需要按记录从EEPROM中读取HEX文件,并对其进行分析,得到应用程序的机器码和其地址,然后通过HPI接口程序传送到DSP中。由于HEX文件中不包含应用程序的入口地址,所以PC机软件需要单独将应用程序的入口地址传送给主MCU,为简单起见,HEX文件记录的结构及其分析不再赘述,可参考其他相关资料。将代码传送到DSP的程序流程图如图2所示。
在DSP应用程序开发中,使用CCS编译、链接后生成.out文件,此文件为COFF格式文件,不能直接用于主机引导,需要利用其他的工具将其转换成HEX文件,至于DSP应用程序的入口地址可以从MAP文件中得到。
结语
本文介绍了一种利用通信接口实现DSP应用程序远程下载的方法,该方法简单易行,已经在我们所开发的项目中得到应用。虽然文中介绍的是利用RS485接口实现,事实上稍加改变,即可利用任意一种通信方式实现,具有一定的实用价值。