基于USB2.0总线的TMS320VC5402 HPI自举的实现

发布者:SparkCrafter最新更新时间:2006-08-15 来源: 电子元器件应用关键字:端点  寄存器  接口 手机看文章 扫描二维码
随时随地手机看文章

  引言

当前,DSP(Digital Signal Processor)芯片已经广泛应用于通信、信号处理、雷达、图像处理等多个领域,其强大、高效的运算能力,是其他微处理器无法比拟的。为充分发挥DSP运算高效的优势,用户程序通常在DSP内部RAM中运行,这就需要利用DSP的自举引导(Boot loader)功能。在DSP多机系统中,HPI自举是首选。目前,采用HPI自举的实例主要有两种,一种是用单片机作为主控制器,通过PC机串口或者外挂的存储器得到要下载的DSP用户程序数据,这种方案无法实现系统与PC机之间数据的实时高速传输;另一种是用PC机并口里控制DSP HPI接口,从而把程序写入DSP 的内部RAM,该方案无法满足嵌入式系统的即插即用要求。

USB接口具有即插即用,速度快(最高可达480Mbps)等特点,可成为PC机的外围设备扩展中应用日益广泛的接口标准,基于USB总线对DSP实现HPI自举,可以降低成本,也便于DSP与PC机的高速数据通信,鉴于此种考虑,本文介绍一种利用USB2.0接口控制芯片(CY7C68013-56PVC)实现TMS320VC5402自举的实现方案。

芯片介绍

USB2.0芯片及其GPIF简介

本方案采用的USB2.0接口控制芯片是Cvpress公司的CY7C6801356PVC,该系列芯片是世界上第一款支持USB2.0的集成微控制器芯片,它集成有USB2.0收发器、智能串行接口引擎(SIE)、增强的8051微处理器,通用可编程接口(GPIF)、片上RAM和FIFO存储器[1]。该系列芯片的智能引擎也支持USB1.1协议,因此,它具有很好兼容性。

CY7C68013与外设有主/从两种接口方式:可编程接口GPIF和Slave FIFO,可编程接口GPIF是一个微状态机[2],可由软件编写读写控制时序,也可以作为USB FIFO的主控制器与DSP进行无缝连接,GPIF可工作在自动模式,USB总线和GPIF接口域直接进行数据传输,无需8051内核直接参入,以此解决USB2.0高速传输的“瓶颈”问题,GPIF与8051内核关系如图1所示。

DSP芯片及其HPI简介

TMS320VC5402是TI公司的一款性价比极高的低功耗定点数字信号处理器(DSP),该芯片的主机接口(HPI,Host Port Interface)被称为HPI-8。这种HPI-8接口的最大特点是它允许主机访问DSP的整个片内空间。HPI接口通过HPI控制寄存器(HPIC)、地址寄存器(HPIA)数据寄存器(HPID)和HPI内存块来实现与主机的数据通信。主处理器对HPI的访问由内外两部分组成,其中外部主要为主处理与HPI寄存器交换数据,而内部则用于为HPI寄存器与DSP存储单元交换数据(由DMA自动完成)。在进行数据地实时通信时,DSP与主机可以通过中断信号进行握手。其具体实现可通过设置HPIC寄存器的HINT、DSPINT位来对对方进行中断[3]。

硬件设计

设计原理

自举从本质上说就是DSP上电后,在Bootloader引导下,获取应用程序并开始运行的过程,TMS320VC5402上电以后,当MP/MC为低电平时,系统将从片内ROM的OFF80H开始执行,此处的跳转指令使程序跳转至BootLoader程序入口处(OF800H处)。Bootloader程序先清除IFR,并设置HPI入口点(0x7F)的值为0,置HINT为低,再检测INT2是否置位(置位可以通过将HINT和INT2相连来实现),如置位则进行HIP自举[4],具过程如图2所示。

DSP复位之后,如检测到HPI自举方式有效,就可以进行HPI自举引导,基于USB总线的HPI自举,就是在Bootloader引导下,通过USB接口控制芯片把程序数据由主机(PC)写入DSP内部RAM(DARAM)并使DSP开始运行的过程,该自举过程分为三个步骤:一是写HPIC,以设置HPI控制参数;二是写HPIA,设置访问DSP的首地址;三是通过HPID下载程序。

首先,推动EZ-USB Control Panel下载CY7C68013的固件程序。当重枚举结束,驱动程序(ezusb.sis)重新安装成功后,在Control Panel中通过发送请求的方式由端点0向HPIC(主要设置BOB位,确定字节配合)发送两个相同的8位控制字,而当HPIC初始化完成之后,再通过端点0设置欲下载程序段到DSP中的首地址HPIA。HPIC、HPIA设置好之后,就可以通过端点2下载DSP程序代码段,程序代码段需要分段下载,实际上,CY7C68013通过端点2把数据写入HPID,然后,DSP按照HPIA指定的地址,由DMA自动将HPID中的数据写到RAM,接口控制时序可由GPIF软件编程控制,程序数据分段下载完毕之后,再将程序的入口地址通过端点0写入0x7F处,在主机下载程序的过程中,DSP将一直检测0x7F是否为0,如不为0,即判定DSP已由主机进行了HPI自举加载,并按照该值跳转PC指针,以开始运行,进而完成HPI自举。

硬件电路

本设计用CY7C68013-56PVC与TMS320VC5402的HPI口相连接,接口选择GPIF模式,硬件电路如图3所示,该方案中,HCNTL[1:0]与GPIF的低位地址线PA3、PA2相连,以选择需要访问的HPI的HPIA、HPIC,HPID寄存器,CTL0接至HR/W,可作为读写控制信号,HDS1与输出信号线CTL1相连,以作为HPI访问的选通信号,HBIL与输出信号线CTL2相连,已用于识别传输的是第一个字节还是第二个字节,HRDY接输入信号线RDY0。用于通过主机查询HPI口的状态,HINT、INT2与INT0连接,可确保HPI自举有效,HCS接GND,可使HPI片选信号有效,HPIENA接高电平时,HPI使能,HAS、HDS2接高电平时,信号线禁用。数据线PD[7:0]与HD[7:0]相连,可在控制时序作用下传输一切数据信号。HPI接口控制时序由CTL0、CTL1、CTL2引脚输出,在自举过程中,系统将关闭CY7C68013所有的中断,若要通过中断实现数据通信的握手,可以在自举完毕打开CY7C68013的中断。

CY7C68013的具体配置为:启用GPIF接口控制数据传输,GPIF接口采用内部时钟(48MHz);端点2设置为批量传输输出端点,最大传输值是512字节,双缓冲;终端4、8禁用。端点6可作为批量传输输入端点来向主机传输数据,需要说明的是端点6不是自举所必需的。

软件设计

DSP应用程序设计

实现TMS320VC5402 HPI自举的前提是生成DSP应用程序的分段Hex代码文件,在CCS中可用汇编语言,C语言等编写应用程序源代码,经汇编、链接、编译后,生成可执行的公共目标文件格式(COFF)的文件,COFF文件不能用于HPI自举引导,而需要利用TI公司的文件格式转换工具hex00.exe,将COFF文件转换为Hex格式文件[5]。格式转换的关键是正确编写Hex命令文件,下面讨论如何编写这种命令文件,例如将包含text段的源程序链接、编译生成test.out文件,编写命令文件时,可利用hex500.exe将test.out转换为对应text段的Hex文件,命令文件test为.cmd如下:

-i      //生成Intel格式

test.out   //输入文件

ROMS

{

PAGE 0:ROM1:org=0x2000,Length=0x2000,romwidth=16,memwidth=16,

files={test1.hex}   //text段的起始地址为0x2000

}   //如有多端就可增加多个ROM SECTIONS

{text:paddr=0x2000} //如有多端就可增加多个部分

在DOS环境下,利用hex500.exe转换命令文件test.cmd,就可得到test1.hex文件,通过CY7C68013把test1.hex文件写入DSP内部RAM,再把程序的入口地址写入0x7F处,便可完成自举。

USB固件程序设计

Cypress公司提供有USB的辅助开发工具:EZ-USB Control Panel,GPIF Designer。通过GPIF Designer可以生成GPIF波形图及相应的C源代码gpif.c。Cypress公司同时提供了固件程序框架,因而可把gpif.c加入固件程序框架进行开发,从而提高开发效率。本方案中,固件程序设计的重点是对GPIF的编程,以便生成符合HPI接口的时序的波形描述代码,以用于控制数据传输,HPI自举需要的GPIF控制波形描述符为:单字节写(两种),FIFO写。HPIA、HPIC的初始化需要单字节写控制时序,程序代码写入HPID需要FIFO写控制时序,若要实现二者的数据通信,还需要单字节读、FIFO读等控制波形描述符。

HPIC、HPIA的初始值是在EZUSB Control Panel中通过制造商请求工具栏由EP0发送的,固件程序中还要有相应的请求处理程序,以完成具体的设置,如假定HPIC请求类型的ID为0xB6.HPIC=0x0101(BOB位为1),则请求工具栏的具体参数应为:Req=0xB6,Value=0x0000,Index=0xBEEF,Length=2,Dir=0,Hex Bytes=0101,固件中应加入的请求处理程序为:

case 0xB6:

{EPOBCL=0;          //EP0使能

while(EP01STAT&bmEP0BSY); //等待EPO数据接收完毕

while(!HPI_RDY);      //等待HPI处理完毕

IOA=0x00;           //选择HPIC寄存器

GPIFWFSELECT=0x1E;      //选择写低字节的单字节写控制波形

while(!(GPIFTRIG&0x80))

{;}

XGPIFSGLDATLX=EP0BUF[0];   //写低字节数据

GPIFWFSELECT=0x4E;      //选择写高字节的单字节写控制波形

while(!(GPIFTRIG&0x80))

{;}

XGPIFSGLDATALX=EP0BUF[1];  //写高字节数据

break;}

设置程序下载的首地址(HPIA值)的请求处理程序与设置HPIC的程序基本相同,只需按照请求类型的ID,来改变访问寄存器的地址即可,访问HPIA时,HCNTL[1:0]=10b,即IOA=0x08。

访问HPID下载程序数据时,可采用大端点EP2自动打包方式(AUTOIN=1),即将数据发送到端点后,自动传到FIFO中,等待写HPID条件具备,再启动GPIF,以将程序数据写入HPID,访问HPDI可采用地址自动增加模式(HCNTL[1:0]=01b),写数据前,地址自动加1,这样,数据便可以经过DSP内部DMA自动写入内部RAM,写HPID的程序如下:

if(GPIFTRIG&0x80)  //GPIF接口是否处于空闲状态

{if(!(EP24FIFOELGS&0x02)) //自动向量是否可以访问EP2FIFO中数据

{IOA=0x04; //选择HPID寄存器,且访问时地址自动增加

while(!HPI_RDY);  //等待HPI处理完毕

SYNCDELAY;

GPIFTCB1=EP2FIFOBCH; //写入的字节数

SYNCDELAY;

GPIFTCB0=EP2FIFOBCL;

SYNCDELAY;

GPIFTRIG=GPIF_EP2;  //启动写数据

SYNCDELAY;

While(!(GPIFTRIG&0x80) //等待写入完毕

{;}

SYNCDELAY;}}

这样程序数据就可以分段通过端点2写入DSP内部RAM,最后再把入口地址写入0x7F,以完成HPI自举,值得注意的是,采用此种方式访问HPID时,写入HPIA的初值为程序入口的一个地址,例如,写test1.hex时,应设定HPIA=0x1fff。

为缩短开发周期,本设计采用开发包中通用驱动(ezusb.sys)和EZUSB Control Panel进行开发、调试、也可以对通用驱动、控制面板的源程序在VC++环境(需要DDK的支持)下进行二次开发,以便编译出开发者满意的驱动程序和上位机程序。

结束语

通过实践证明,基于USB2.0总线DSP HPI自举的方案是可行的,可以达到预期效果,该方案可以省掉外扩的EPROM、FLASH及RAM等程序存储器,故可节约成本,也便于DSP软件算法升级,而且符合嵌入式系统要求,有很好的应用前景,当然,该方案还有待进一步优化与增强,若要访问外部存储器,还需要编写二次引导程序,以便通过该程序把内部存储器中的数据编译到外部存储器,若需DSP与主机实时通信,则需要USB固件和DSP源程序中编写相应的中断服务程序。

关键字:端点  寄存器  接口 引用地址:基于USB2.0总线的TMS320VC5402 HPI自举的实现

上一篇:基于USB2.0的TMS320VC5402 HPI自举
下一篇:基于FPGA的多种形式分频的设计与实现

推荐阅读最新更新时间:2024-05-02 20:25

什么是PS/2接口 USB(通用串行总线)接口
  PS/2接口是目前最常见的鼠标接口,最初是IBM公司的专利,俗称“小口”。这是一种鼠标和键盘的专用接口,是一种6针的圆型接口。但鼠标只使用其中的4针传输数据和供电,其余2个为空脚。PS/2接口的传输速率比COM接口稍快一些,而且是ATX主板的标准接口,是目前应用最为广泛的鼠标接口之一,但仍然不能使高档鼠标完全发挥其性能,而且不支持热插拔。在BTX主板规范中,这也是即将被淘汰掉的接口。   需要注意的是,在连接PS/2接口鼠标时不能错误地插入键盘PS/2接口(当然,也不能把PS/2键盘插入鼠标PS/2接口)。一般情况下,符合PC99规范的主板,其鼠标的接口为绿色、键盘的接口为紫色,另外也可以从PS/2接口的相对位置来判断:靠近主
[嵌入式]
如何管理高速数字接口的EMI
  当今高速数字接口使用的数据传输速率超过许多移动通信设备(如智能手机和平板电脑)的工作频率。需要对接口进行精心设计,以管理接口产生的本地电磁辐射,避免接口信号受其他本地射频的干扰。本文探讨了管控高速数字接口EMI的若干最重要技术,说明了它们是如何有助于解决EMI问题的。   小尺寸且低成本的高速串行(HSS)接口对那些必须要体积小、功耗低、重量轻的移动设备尤为可贵。当移动设备必须与远程网络通信时,会发生电磁干扰(EMI),因为现代HSS接口使用的数据速率往往高于移动设备所使用的无线通信频率。   为实现成功的移动通信产品,这些产品内所有组件必须要各司其职、和平共处。这不仅意味着任何不期望产生的射频信号必须不干扰任何有意发射的射频
[电源管理]
如何管理高速数字<font color='red'>接口</font>的EMI
一种通过SPI接口协议实现DSP与其它设备通信的方法
介绍了SPI通信协议,并着重介绍了TI公司生产的TMS320C5402 DSP用于SPI协议通信时的串口配置方法和接口电路设计实例,最后给出了串口McBSP的配置程序。 关键词:多通道缓冲串行口,主设备,从设备,NECuPD780308,SPI,DSP 1 引 言   随着信息技术革命的深入和计算机技术的飞速发展,DSP技术也正以极快的速度应用到科技和国民经济的各个领域。在很多工程开发处理中,往往要求实现单片DSP芯片与单片DSP芯片、多片DSP芯片以及其它处理芯片的通信,怎样更高效、更便捷地实现通信,已成为广大DSP应用者必须首要解决的一个问题。   本文根据笔者在工程应用和调试TIDSPTMS320C5402与NE
[工业控制]
一种通过SPI<font color='red'>接口</font>协议实现DSP与其它设备通信的方法
STM32单片机用FSMC接口控制SRAM
环境: 主机:WIN7 开发环境:MDK4.72 MCU:STM32F103ZE 说明: sram型号:IS62WV51216BLL 连接方式:FSMC 大小:1M字节.512K * 16 源代码: inf_sram.h /********************************************************************* * sram接口层头文件 * (c)copyright 2013,jdh * All Right Reserved *文件名:inf_sram.h *程序员:jdh *修改日期:2013/10/10 * 2013/10
[单片机]
传统的RS485接口电路图
作为一种常用的通讯接口器件,RS-485/RS-422 芯片可以在很多半导体公司中找到对应的型号,比如ADI 公司(器件前缀为ADM)。大部分产业RS-485总线的客户应用如下的电路连接方式如图所示,其485电路主要由2或3个快速光耦,RS-485收发器件以及隔离电源模块组成,优点是连接简单,价格便宜,缺点是用的器件较多,占用的PCB面积大,而且光电耦合器的在速度限制、功耗以及LED老化上受到限制。   图 ADM487E典型应用电路
[嵌入式]
基于IP机顶盒的视频点播系统
  对于大多数普通人来说,对机顶盒的认识始自微软的维纳斯计划。1999年3月,比尔?盖茨来到中国的深圳,亲自为其雄心勃勃的维纳斯计划摇旗呐喊,力图挺进中国的信息家电领域。推广嵌入微软Windows CE系统的机顶盒是微软为中国定制的维纳斯计划的核心,但耗资数十亿美元的结果却是无疾而终。不少专家分析认为,这个宏伟的计划之所以失败,很大程度上缘于中国当时的网络基础设施薄弱。   宽带应用是宽带网络竞争真正的主宰者,而网络的流媒体技术则是最重要的宽带应用之一。作为流媒体技术的龙头应用,视频点播的产生转变了传统互联网呆板的内容表现形式,赋予宽带应用更多的娱乐性和互动性,日益成为促进宽带网络普及的重要推动力。   VOD 类似于 PVR
[家用电子]
MSP430CPU介绍
总结 1. CPU介绍 MSP430的CPU具有诸如计算分支、表格处理、支持高级语言(C)等现代处理器特征,其特点包括: 1.RISC精简指令集 2.正交体系结构 3.包括程序计数器PC、堆栈寄存器SP、状态寄存器SR在内的全部寄存器可访问 3.单周期寄存器操作 4.更大的寄存器容量以减少内存访问 5.20位地址总线允许直接访问,在整个内存范围内进行分支,而不进行分页。 6.16位数据总线允许长字访问 7.提供常数发生器产生6个常用常数以减少代码大小 8.直接内存到内存传送不需要中间寄存器 9.字节、字、20位地址直接访问 2. 中断 中断向量为16位地址,可指向低64KB内存,这也意味着中断服务程序必须位于低64KB的内存空
[单片机]
MSP430CPU介绍
汇编语言学习笔记——————寄存器
CPU概述 内部总线 一个典型的CPU由运算器,逻辑控制器,寄存器等器件组成,这些器件靠内部总线相连。 内部总线与外部总线的区别 内部总线实现CPU内部各个器件之间的联系。 外部总线实现CPU和主板其他器件的联系。 寄存器 8086CPU有14个寄存器,他们的名称为:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。 通用寄存器 8086CPU所有的寄存器都是16位的,可以存放两个字节。 AX,BX,CX,DX通常用来存放一般性数据被称之为通用寄存器 下图是AX通用寄存器的寄存器图: 一个16位的寄存器可以存储一个16位的数据 8086上一代CPU中的寄存器都是8位的,为了保
[单片机]
汇编语言学习笔记——————<font color='red'>寄存器</font>
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved