打印
[DSP]

基于在线编程的DSP并行引导方法

[复制链接]
497|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Roses|  楼主 | 2019-6-15 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于在线编程的DSP并行引导方法



 :本文在介绍并行引导的基本概念和自举表格式的基础上,提出了一种基于在线编程的TMS320VC5402 DSP16 b或8 b并行引导装载的方法,并讨论了TMS320VC5402与片外闪存芯片的接口及在线编程的实现方法。

关键词:TMS320VC5402;在线编程;并行引导;DSP


TMS320VC5402是德州仪器公司(TI)1999年推出的一款性价比极高的16b定点数字信号处理器,其操作速率最高可达100MI/s,具有较强的运算和数据处理能力;其片上自带标准串行收发器,可支持多种通信协议且易于扩展,有很强的通用性。被广泛应用于通信和数字处理领域。但是5402片上的ROM不对普通用户开放,因此在使用时需要外部扩展程序存贮器。闪存(FLASH)是可以在线擦写,掉电后数据不会丢失的存贮器。具有体积小,功耗低等特点,是作为TMS320VC5402外扩程序存贮器的一种较好选择。对片外存储器烧写通常需要对程序代码进行多次转换,同时还需要借助代码格式转换的工具来完成。本文提出了一种直接在CCS环境下通过在线编程来完成片外存储器烧写,实现并行引导的新方法。


1 320VC5402与片外存贮器的接口电路分析


  DSP与SST39VF400A的接口电路如图1所示。主要由3个部分组成:DSP处理器TMS320VC5402、译码电路GAL16V8D和闪存芯片SST39VF400A。




1.1 SST39VF400A的主要特点及其编程方法


  SST39VF400A是256k×16b高性能闪存芯片,他的主要特点是:3.3V单电源供电,引脚可与DSP芯片直接连接;功耗低;读取速度快(70~90ns);支持单字节编程;支持3种擦除方式:以2kB为单位的扇区擦除,以32kB为单位的块擦除和片擦除。
    SST39VF400A具有在线烧写功能,只要在有效的擦除 工作完成后,按照特定的命令时序向其写入编程命令和数据就可以实现对他的编程。以单字节编程命令时序为例,每写一个字都需要连续执行4个周期的写命令,在第1个周期向Flash的5555h单元写数据0x00aa,第2个周期向2aaah单元写数据0x0055,第3个周期向5555h单元写数据0x00a0,第4个周期向要访问的目的地址写具体数据,此后Flash进行内部编程操作,完成数据的写入,完成这一过程需要10~15μs。上述过程主要是由Flash芯片上的片选信号(CE#)和读使能信号(WE#)控制,其中用CE#和WE#中后到来的下降沿(此时CE#和WE#都为低)来取得地址信息,用CE#和WE#中先到来的上升沿(此时CE#和WE#只有一个为高)来获得数据信息。其时序如图2所示。



1.2 译码电路的配置
    对译码电路GAL16V8D的配置如下:
  


  为讨论方便,本系统将SST39VF400A的A15,A16和到DSP的0x8000~0xffff空间,这时要注意的是,在对FLASH作读写操作时需要进行地址重定位。例如:在要访问FLASH的0x5555单元时,DSP访问的是0xd555单元,即在操作Flash时要保持DSP的A15为高电平,以使能读写。



2 TMS320VC5402 DSP的引导装载方式


  由于TMS320VC5402的片内ROM不对普通用户开放,所以一般采取从片外读入程序的方法来实现DSP的正常运行。DSP上电后从片外读入程序的过程叫做自举过程(Bootloaser)。TMS320VC54XXDSP芯片内部设置有Bootloader程序,其主要作用是在系统上电复位后,将用户程序从外部存贮器装载到DSP的内部随机存贮器并运行程序。
  可以采用多种Bootloader方式将外部程序装入DSP中,这些方式包括串口方式,HPI方式,并行方式和WARM方式。此外DSP还支持8b或16b数据总线的外部存贮器件及多块外部存贮器件的Bootloader方式。
  上电复位后,如其MP/MC引脚为低电平,则DSP进入Bootloader模式,从0xff80单元开始执行片内引导装载程序。进入引导程序后,如有INT2请求中断,则进入HPI引导方式;如有INT3请求中断,则进入串口引导模式;若没有中断请求,系统进入并行引导模式。进入并行引导模式后,DSP首先在0xffff单元读取一个地址;然后跳转到这一地址,根据地址单元的数据判断是16b并行引导还是8b并行引导;接着依次读入以下内容:SWWSR,BSCR寄存器所需要配置的值、程序入口地址所在的页面、程序入口地址、程序块长度、程序存放目标地址所在的页面和程序存放目标地址;最后DSP开始读取程序代码并将其装载到片内存贮器中。
  并行引导的过程不仅包含将片外程序装载到片内并运行的过程,还应包含将用户程序烧写到片外存储器中的过程。通常采用的程序烧写方法是按照并行引导相应的数据存放格式编写一个CMD文件,该文件主要包括:所要转化的out格式的文件名、输出文件格式、外部存储器的存贮宽度、加载方式以及加载信息在DSP数据空间的起始位置等内容。然后利用专门的工具(如HEX500)对这个CMD文件进行操作,将CCS编译生成的.OUT文件转化为十六进制文件(.HEX文件),最后将十六进制文件通过烧写器烧入片外存贮器,或将十六进制文件再转化为数组头文件(.H文件),在CCS环境下烧入片外存贮器。本文介绍一种不用借助其他工具,直接在CCS环境下将用户程序烧入Flash,并完成并行引导的方法。



3 通过在线编程来完成并行引导的实现方法  
    这种新方法的关键是要在CCS中做一个数据烧写程序,先将用户程序载入DSP的片上RAM,这时CCS实际上已经把coff格式的文件转化为了十六进制文件;再将自己编写的烧写程序载入DSP,直接将用户文件所在空间的数据搬移到Flash的指定空间。由于TMS320VC5402片上RAM(0x0060~0x3fff)的程序空间和数据空间互相重叠,即在0x0060~0x3fff空间上程序空间和数据空间的内容相同,所以对用户程序所在空间的数据搬移操作相当于程序搬移。具体的方法如下:


3.1 16 b并行引导方法
  首先,在DSP数据空间的0xffff单元(由第2节,他对应的是Flash的0x3fff单元)中写入数据0x8000,这样在DSP的Bootloader程序运行时,会自动跳转到DSP的0x8000单元(即Flash的0x0000单元)。
  然后,在0x8000单元写入0x10aa,当DSP读入这一数据时会识别为16 b并行引导模式。
  接着,在0x8001~0x8007单元依次写入SWWSR,BSCR寄存器的值以及程序入口地址所在的页面、程序入口地址、程序块长度、程序存放目标地址所在的页面和程序存放目标地址。
  最后,从0x8008单元开始写入用户程序,程序写入完毕,在紧接下来的一个地址中写入程序结束标志0x0000。  
    完成对Flash单字写操作的子程序如下:


  


  


3.2 8b并行引导方法
  对于8b的存贮器,需要把16b的程序代码转化为8b的程序代码。由图3可知DSP在做8b的并行引导时,是读入两个连续单元的数据,且高8b在前,低8b在后。所以,处理8b并行引导与16b引导的区别只在与后者需要通过移位将程序代码由一个单元转化为2个单元。转化程序如下:



  上述程序将16b程序代码转化为8b程序代码,只需把生成的8b程序代码作为用户程序烧入Flash,DSP的Bootloader程序会将他转化为16b的程序代码装载到指定的位置,以完成并行引导。需要注意的是在0x8000和0x8001单元应写入0x0008和0x00aa,以使DSP进入8b并行引导模式,其他步骤与16b并行引导相似。



4 结语
  本文介绍的方案能够在不借助任何外部工具的情况下,使用在线编程方法,完成16b和8b并行引导,方法简单,易于实现。对于TMS320VC5402和其他需要外部扩展程序存贮器DSP芯片的电路设计和应用有一定的参考价值。


使用特权

评论回复

相关帖子

沙发
Roses|  楼主 | 2019-6-15 16:53 | 只看该作者
基于在线编程的DSP并行引导方法

新建 Microsoft Word 文档.pdf

453.66 KB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

709

主题

1023

帖子

7

粉丝