介绍了在TI公司TMS320VC33 DSP应用系统中,通过JTAG口对DSP外部FLASH存储器实现在线编程的方法,给出了DSP系统加电后的自动装载运行。
关键词:DSP JTAG FLASH存储器 在线编程 Bootload
FLASH存储器是一种高密度、非易失性的电可擦写存储器,存储量大,使用方便,适用于低功耗、高性能的系统。在高速DSP应用系统中,为了充分发挥DSP性能,在加电后需要将用户代码装载到高速RAM存储器中运行。下面介绍 SST29LE020型FLASH存储器的烧写方法,以及如何实现TMS320VC33上电后用户程序的自举引导(Bootload)。
1 SST29LE020的特点及操作
SST29LE020是SST公司生产的一种256K×8FLASH,它有10万次以上的擦写寿命,其内部分为2048个页面,每个页面128字节,页面写周期为5ms。如果页面中一个数据需要改变,则这个分区的所有数据必须重新装入。(The SST29LE020 are 256K x8 CMOS Page-Write EEPROM manufactured with SST's proprietary, high performance CMOS SuperFlash technology. The split-gate cell design and thick oxide tunneling injector attain better reliability and manufacturability compared with alternate approaches. The SST29LE020 write with a single power supply. Internal Erase/Program is transparent to the user. The SST29LE020 conform to JEDEC standard pinouts for byte-wide memories.)
FLASH支持软件数据保护功能(Software Data Protection),当执行三字节DSP写指令时,保护功能将自动加上,任何后续的写操作必须带上三字节DSP写指令。
SST29LE020的读操作与传统EPROM读操作一致;在进行数据编程操作时,它支持内部定时(Internal Timer)、数据查询(Data#Polling)、跳变位(Toggle Bit)三种方式,以测试内部编程操作是否完成。FLASH软件擦除指令为6字节加载指令,该指令执行后,最多等待20ms整个芯片便被擦除,即将 FLASH每个数据位都恢复为1状态的全FF状态。
SST29LE020软件指令序列可在SST公司的数据手册上查到,在FLASH编程之前,需对FLASH进行擦除,擦除操作需要六个总线周期。
FLASH页面写操作在使用内部定时方式时的流程。
2 TMS320VC33简介
TMS320VC33是美国TI公司推出的TMS320C3X系列的32位浮点数字信号处理器,它是在TMS320C31浮点DSP的基础上开发的一个价格更低的DSP,该产品具有高速、低功耗、低成本、易于开发等显著优点。 TMS320VC33采用内部1.8V,外部3.3V供电,因而它的功耗比原有型号TMS320C31的功耗降低了大约一个整量级,而且能支持高达 150M/FLOPS的运行速率。其主要特性如下:
CPU是32bit的高性能CPU:可进行16/32b整数和32/40b的浮点操作;内含8个扩展精度寄存器;有2个地址发生器、8个辅助寄存器和2个辅助寄存器算术单元(ARAU)。
片内存储器为32bit指令字、24bit地址线、34K×32b(1.1Mb)的双静态RAM。
外围接口具有启动程序装载功能;内含5倍频的锁相环(PLL)时钟发生器;片内存储器可映射外设,其中包括一个串行口、两个32bit定时器和一个DMA;具有四个内部译码页选,可大大简化TMS320VC33与I/O及存储器的接口。
3 TMS320VC33程序引导功能
TMS320VC33具有两种存储器映射方式,即MP(Microprocessor Mode)方式和MC/BL(Microcomputer/Bootloader Mode)方式,两种方式下中断向量的位置不同。常用的是MC方式。在该方式下,MCBL/MP引脚接高电平,内部ROM被映射到000~FFF之间。这段ROM中今有器件生产厂家固化的引导程序(BootLoader),该引导程序可以将DSP实时运行的程序和数据从外部低速ROM或串行口装入到高速 RAM中。
TMS320VC33复位后即运行内部固化的引导程序,引导程序通过查询四个中断引脚来确定装入方式。这些引脚为低电平有效,查询顺序依次为INT3、INT0、INT1、INT2;当INT3有效时,为串行装入方式;当INT0有效时,从外部地址0x001000处装入(BOOT1);当INT1有效时,从外部地址0x400000处装入(BOOT2);当INT2有效时,从外部地址 0xfff000处装入(BOOT3)。
TMS320VC33具有四个快速页选信号,用于对外部地址空间寻址。
使用外部存储器装入数据时,外部存储器数据头位置需包含以下信息:
(1) 外部存储器宽度(8/16/32位);
(2) 程序代码块的长度;
(3) 装入数据的目的起始地址;
(4) 存储器访问的定时控制参数。
头信息之间是用户的程序代码,程序代码按低位在前、高位在后的顺序排列。程序代码之后,必须有一个全零字,即0x00000000,用以指示引导程序用户程序代码已结束。引导完成后,即从装入的目的地址处开始执行用户程序。
4 FLASH在线编程方法
TMS320VC33的调试使用CC for C3x/4X(Code COmposer)集成编程环境,通过JTAG头仿真用户板,用户代码先放在外部RAM中调试,调试成功后,就可以将用户程序代码写入FLASH了。下面介绍在并行装入BOOT2方式下的在线编程方法。
SST29LE020与TMS320VC33的连接方式比较简单,FLASH片选CE引脚直接连接至TMS320VC33的PAGE1引脚;FLASH的输出使能OE引脚的最简单的处理方法是采用跳线方式(当向FLASH写入数据时,接高电平;通常情况下,接地)。
在调试用户程序时,需根据用户板的存储器空间分配制作CMD文件,假设用户扩展的外部RAM为32bit,起始地址为0x00c00000,长度为32K;外部FLASH起始地址为0x00400000(使用BOOT2方式),长度为256K。
|