TMS320VC55x系列DSP的Flash引导方法研究
1 引言
随着数字信号处理技术的快速发展,DSP(数字信号处理器)越来越广泛地应用于各种数字信号处理系统中。最终开发的系统要想脱离仿真器运行,必须将程序代码存储在非易失性存储器中。Flash存储器以其大容量和可在线编程等特点已成为DSP系统的一个基本配置。如何将程序烧写进Flash,并在上电时加载到DSP内部的RAM是Flash在DSP系统中应用的两个基本技术问题。本文以基于TI公司的TMS320VC5509A和Atmel公司的AT49LV1024 Flash开发的系统为背景,详细介绍了系统引导相关的硬件设计、烧写软件设计以及自举引导和二次引导等实现方法。
2 TMS320VC5509A的自举引导
2.1 TMS320VC5509A的自举模式配置
TMS320VC5509A每次上电复位后,在执行完一系列初始化(配置堆栈寄存器、关闭中断、程序临时入口、符号扩展、兼容性配置)工作后,根据预先配置的自举模式,通过固化在ROM内的Bootloader程序进行程序引导。VC5509A的引导模式选择是通过4个模式选择引脚BOOTM[0:3]配置完成的。 BOOTM0~3引脚分别与GPIO1、2、3、0相连。在本系统设计中,采用EMIF(外部存储接口)并行引导模式(16位数据宽度),只需将BOOTM[3:0]设置成1011即可。
EMIF为外部存储接口,通过EMIF接口可以灵活地和各种同步或异步存储器件无缝连接。通过EMIF可以将VC5509A的存储空间扩展到128 Mbit(SDRAM),存储空间共被分为CE0~CE3四个段,每段占用不同的地址。在EMIF的并行引导模式中,ROM固化的Bootloader程序是以0x200000为首地址开始加载程序。0x200000即为CE1空间的首地址,所以Flash必须接在DSP的CE1空间上。在加载时。EMIF的CE1空间已经默认配置成异步静态随机存储器(SRAM)接口,并且在时序上采用了最差情况设置(即最慢访问速度),充分保证了时间裕量,使得程序代码顺利地加载到DSP的内存中。
2.2 TMS320VC5509A的引导表
Bootloader在引导程序时,程序代码是以引导表格形式加载的。TMS320VC55x的引导表结构中包括了用户程序的代码段和数据段以及相应段在内存中的指定存储位置,此外还包括了程序人口地址、部分寄存器的配置值、可编程延时时间等信息。TMS320VC55x系列DSP的引导表结构如表1所示。
其中,程序入口地址是引导表加载结束后,用户程序开始执行的地址;寄存器配置数目决定了后面有多少个寄存器需要配置;只有当延时标志为0xFFFF时,延时才被执行;延时长度决定了在寄存器配置后延时多少个CPU周期才进行下一个动作;段长度、段起始地址和数据则为用户程序中定义的各个段的内容,并且可以重复添加;最后以0x00000000(32个0)作为引导表的结束标志。
若要生成引导表,可用CCS最终编译生成的,out文件通过CCS自带的hex55.exe转换程序得到。将hex55.exe、.out文件、.0cmd文件放在同一个文件夹中,通过DOS命令调用hex55.exe。即可完成.out文件到hex格式的引导表文件的转化。.CMD文件用于提供引导表的相关配置信息,以下为一个.CMD文件的实例:
3 Flash的烧写和自举的实现
3.1 TMS320VC5509A和AT49LV1024的硬件没计
AT49LV1024是Atmel公司一款3 V供电系统的Flash存储器,16位位宽,容量为64 KB(16条地址线)。VC5509A(PGE封装)只有14条地址线,只能寻址16 KB的SRAM空间。要想寻址64 KB地址空间的话,Flash地址线的高两位则需要通过其他I/O线控制。在本系统中通过GPIO4和GPIO6与Flash的高两位地址相连实现,其连接示意图如图1所示。但是在Bootloader自举引导程序时,并不能控制GPIO引脚,也就是只能引导最大16 KB的程序。对于大于16 KB的程序,则需要进行二次引导。
3.2 二次引导技术
所谓二次引导,就是通过DSP内部ROM固化的Bootloader引导用户自行编写一个引导程序,其功能和ROM固化的Bootloader相同,再通过此引导程序加载系统最终运行的程序代码,并在加载结束后,把PC值置为新的程序入口地址。在用户编写的引导程序中控制GIPO4和GPIO6,即可实现64 KB地址空间寻址。具体实现框图如图2所示。
3.3 数据烧写程序设计
Flash的数据可直接读取,但对Flash的编程和擦除操作则需要通过一系列命令才能进行。AT49LV1024的写操作只能将1变成0,而0变成1必须通过擦除操作进行。所以每次写Flash之前必须进行片擦除,使存储单元值变成0xFFFF,才能进行编程。
擦除命令需要6个周期,操作命令如表2所示。
编程命令需要4个周期,操作命令如表3所示。
编程和擦除操作都需要一定周期的时间(AT49LV1024的单字编程时间是20μ8,整片擦除时间是10 s),用户可以通过查询标志数据线DQ6和
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 数字频率合成器的FPGA实现(08-07)
- 基于DSP的导弹仿真器嵌入式组件设计(04-30)
- 如何将DSP和MCU两者完美结合(08-10)
- 高性能仿真器与开发包加速普及DSP应用开发(11-22)
- 基于DSP内嵌PCI总线的卫星信号仿真器设计(04-17)