【摘要】TI的TMS320VC5509A DSP芯片提供了几种不同的引导配置,不同的配置决定了DSP复位后的初始化和代码引导方式。本文就TMS320VC5509A DSP的HPI引导过程进行了详细的设计,包括HPI的一级引导和二级引导,最后给出了HPI二级引导的软件和硬件的具体实现。
【关键词】TMS320VC5509A;HPI;引导过程
Abstract:The TI TMS320VC5509A DSP chip provides several different boot configurations that determine the DSP initialization and boot way in which resetting code is used. This article carried out a detailed designof theTMS320VC5509A HPI boot process, including primary and secondary HPI boot process, and finally gives the software and hardware Implementationof the HPI secondary boot.
Keywords:TMS320VC5509A;HPI;Boot Process
1.概述
TMS320VC5509A的主机接口HPI(Host Port Interface)是TI公司为了满足DSP与其他微处理器接口通信而专门设计的16/32位宽度并行接口。主机处理器可以通过它直接访问DSP的整个内存空间。
2.DSP的BOOT引导
DSP的BOOT引导是指系统加电或复位时,DSP将一段存储在外部的非易失性存储器的程序代码通过DMA方式拷贝到内部的高速内存中运行。这样既能扩展DSP有限的存储空间,又能充分发挥DSP内部资源的效能。
DSP的引导过程[1]为:1)DSP复位后,通过DMA方式将外部CE1空间的数据读入到内部程序空间地址0处,读入数据的多少因芯片而异。 2)DSP推出复位状态,开始执行内部程序空间地址0处的程序,这段程序先将外部主程序数据读入到DSP内部程序空间相应地址,然后跳转到主程序运行。第一步是由芯片自动完成,关键是第二步,用户需要编写相应的程序,实现二级引导,即用户主程序的装载。
为了适应不同系统的需要,TMS320-VC5509A提供了不同的引导方式,比如EMIF接口引导方式、串口引导方式、SPI接口引导方式、HPI引导方式和USB引导方式[1]等等,其中主机接口(HPI)引导以其操作简便,硬件接口简单等优点被广大用户所选用。
3.DSP中HPI引导过程
在我们设计的系统中,需要用到HPI接口,再用它做为引导方式,以提高系统硬件的利用率,同时避免采用其他引导方式带来的附加的硬件设计。
3.1 DSP一级引导
实际上,TMS320VC55x系列DSP的片内固化的Bootloader程序中已经包含了HPI的一级引导程序。boot通过复位时设置引脚BOOTM[3:0]为0101b来实现HPI引导,在这种引导方式中,外部主机可以直接将代码和数据加载到DSP存储器。当主机完成应用程序的加载后,它将入口点字节地址和非0等待标志值写到字地址0060h和0061h中.通知CPU开始执行,当检测到等待标志位为非0值时,CPU从指定的人口点开始执行,从而结束HPI方式的引导过程。
3.2 DSP二级引导
一级boot完成后,程序boot-image可以通过一级boot程序进行二级boot,这里的代码和数据段地址可以不放DARAM内。利用二级引导程序突破16K字的空间限制,HPI允许主机访问内部DARAM的字地址范围是000060h-003FFFh,共16K字的空间。一般来说,16K字的空间远远不够用,大部分代码都可能放置在SARAM和片外的程序空间,而这部分空间并不是主机能够访问得到的。DSP程序本身是能够访问到所有DSP数据空间的,所以主机可以首先放置一个体积不大于16K的程序到DSP内,再由该程序和主机协作完成超出片内DARAM的代码加载。
4.HPI二级引导程序的设计
二级引导程序的功能就是按照和主机的某种约定,获取DSP程序代码和相应地址信息,在DSP所能够访问到的存储器空间生成DSP程序代码。二级引导需要实现的功能比较少,代码量一般都很小,一般来说,我们把boot-image程序转成bin文件进行加载。
如图2所示为二级引导程序的实现流程,用DARAM中的某些单元作为DSP和主机的握手单元来实现二级引导程序。
图1 二级boot程序流程图
握手单元功能如下所示:
0x62:传输标志,主机置1表示DSP可读,置0xffff表示传输结束;
DSP置0表示主机可写,置0xaaaa表示通知主机开始下载。
0x66,0x67:当前传输的数据段的目的起始地址。
5.HPI二级引导的实现
5.1 HPI二次引导软件的实现
加载成功一级boot后,首先要启动一级boot程序,之后开始加载二级boot。这里写出主要代码部分。
1)Load二级boot。
读取boot-image bin文件字节总数,将所有字节写入到REG_BOOT_DATA寄存器中。写一个字的数据,发送一条CONFIGURE命令到命令寄存器中。
temp_len=file_size;
temp_len>>=1;
for(i=0;i { fread(temp_buf,1,2,boot_file_fp); temp_data=temp_buf[0]; temp_data<<=8; temp_data+=temp_buf[1]; temp_addr=BOOT_DATA_ADDR; write_addr_reg(temp_addr); write_data_reg(&temp_data,1); send_dsp_cmd(CMD_CONFIGURE); } 2)写入校验数据 将校验数据BOOT_CHECK写入REG_BOOT_DATA寄存器,并发送CONFIGURE命令到命令寄存器REG_DSP_CMD来完成二级boot的检验工作, temp_addr=BOOT_DATA_ADDR; write_addr_reg(temp_addr); write_data_reg(BOOT_CHECK); send_dsp_cmd(DSP_CMD_CONFIGURE); 3)启动程序 写PROGRAM_START_ADDR寄存器,将值0x01写入该寄存器中,然后发送COMM START命令到命令寄存器来完成程序启动。 temp_addr=PROGRAM_START_ADDR; write_addr_reg(temp_addr); temp_data=0x1;//启动boot-image write_data_reg(temp_data); send_dsp_cmd(0x0B); 5.2 HPI引导过程在硬件上的实现 在这里用的硬件是at91sam9260 arm芯片作为主CPU[2],与Ti公司的TMS320VC- 5509A dsp芯片[3],其硬件连接图如图2所示。 图2 ARM9260与DSP 5509A的HPI硬件连接 图3 HPI引导过程显示打印说明图 具体实现分为两步: 1)编写转换工具具把COFF文件转换成二进制(BIN)文件。首先在PC机上调试好二级引导程序和DSP应用程序(COFF格式),然后从COFF格式文件中提取有用信息,将其转换成BIN文件,并将这些文件存放到主机的Flash中。 2)利用主机程序将BIN格式的文件下载到DSP存储器中。系统启动后.主机从Flash中获取二次引导程序的BIN数据,通过(下转第21页)(上接第19页)HPI将其下载到DSP的DARAM存储区内,下载完成后通知DsP启动运行二级引导程序;然后主机从其Flash中获取DSP应用程序的BIN数据,通过HPI将其分段放入DSP的DARAM存储区内;二级引导程序根据主机写入的段数、目的地址和长度,最终完成DSP应用程序的正确定位;最后启动DSP应用程序。 这里以一个简单的例子为例,二级boot为一个电灯程序采用超级终端显示加载成功的文字显示,见图3,完成加载后,可以在DSP段的XF(101脚)引脚发送一个方波信号,通过示波器检测,发现二级boot程序启动成功。 6.结论 对于DSP引导方式,用户可以根据自己工作中DSP目标系统的需求,灵活选用。这个系统中,我们采用HPI引导方式,提高系统硬件利用率,程序代码的编写不再受DSP空间的限制,可采用二级boot的方式,通过主机进行读写,方便,可靠,这种方法在很多系统中都已经得到应用,使用效果非常不错。 参考文献 [1]TIUsing the TMS320VC5503/C5506/C5507/C5509/C5509ABootloader,2008. [2]宁可庆.DSP HPI口与ARM9总线接口的WINCE下设计实现[J].信息系统工程,2010. [3]党瑞荣.TMS320系列DSP原理、结构及应用[M].机械工业出版社,2012. [4]王在渊,田玉敏,李申鹏.HPI在DSP程序引导中的应用[J].国外电子测量技术,2008 (5). [5]赵洪亮.TMS320C55x DSP应用系统设计(第2版)[M].北京航空航天出版社,2010. 作者简介:谢于晨(1983—),女,硕士,现供职于江西科技学院,主要研究方向:嵌入式开发,移动通信等。