TMS320VC5402(以下简称C5402)是德州仪器公司(TI)推出的性价比极高的16bit定点数字信号处理器(DSP),操作速率可达100MIPS,它的内部资源配置为用户构造系统提供了很大便利。
C5402芯片配置有4K×16bit片内屏蔽式的ROM(F000h-FFFFh)。在4K ROM资源里,包含了Bootloader程序。这个Bootloader程序在系统通电后能自动将存放在外部载体的用户代码引导到程序存储器的任何空间或片内RAM。如果芯片的MP/MC脚在复位时为低电位,指令从片内ROM的FF80h地址开始执行,在FF80h地址后有一个跳转指令自动转入到Bootloader程序,由Bootloader程序进行引导装载用户程序。
C5402芯片内包含有16K×16bit双存取的RAM(DARAM)。DARAM分成两个块,每个块为8K,每个块在一个机器周期内支持两次读或一次读和一次写。片内DARAM位于数据空间0080h-3FFFh地址,通过设置C5402寄存器PMST的OVLY位为1,可以把片内RAM映射成程序/数据存储空间。用户在设计自己的系统时,如程序容量不超过16K,则可考虑充分利用芯片的内部资源,采用引导装载的方式,以降低系统的设计难度和设计成本、缩短产品研制周期。
1 8bit EPROM引导装载的特点和初始化
TMS320VC5402 Bootloader用于在芯片通电时将存储于外部的用户代码传输到内部或外部程序存储器,用户代码可存储在外部速度较慢的非失忆性的存储器内,使C5402能外扩普通低速的EPROM。经引导后,用户代码可装载到高速的片内或片外RAM中执行,以充分发挥C5402指令高速运行的特点。
Bootloader能提供许多种引导方式以适配不同的系统设备,包括两种并行总线方式、串口方式以及主机口方式(HPI),具有很强的系统灵活性。同时支持8位字节和16位字的模式。8bit EPROM并行引导是设计C5402 DSP系统最常用、最经济、最简便的引导方式,用户代码可存储在低速的EPROM外设中,其地址位于外部数据空间的4000h~FFFFh段,共48K。要实现EPROM并行引导至片内RAM,C5402首先要进行如下初始化设置:
(1)将芯片的MP/MC脚接地,使C5402工作在微计算机方式;
(2)设置寄存器PMST中OVLY=1,使片内RAM0080h~3FFFh既映射在程序区,又映射在数据区;
(3)设置寄存器PMST中DROM=0,使F000h~FFFFh映射在外部数据区;
(4)程序和数据空间设置成7个等待状态。
(2)、(3)、(4)项用C5402芯片掩摸ROM中的引导程序实现。在C5402上电复位后,指令总是从FF80h处执行,然后自动跳转到内部引导程序入口地址F800h,判断芯片MP/MC位,若为逻辑0,则执行引导程序。
2 8bit EPROM引导装载的实现
2.1 EPROM并行引导过程
为使C5402能有效地把外扩EPROM中的程序引导到芯片内RAM,需要编制一个引导表。引导表定位于数据空间的4000h~FFFFh段,引导表的内容包含如下几个方面:(1)引导方式的标识;(2)程序存放的目标首地址;(3)程序执行的入口址址;(4)用户程序代码;(5)用户程序块长度。
引导表数据结构是通过执行链接命令程序和Hex转换公用命令程序形成的。在链接命令程序中分配了程序和数据结构,在Hex转换公用命令程序中定义了引导方式、程序执行的入口地址和外部EPROM的首地址。
片内ROM的引导程序首先读取I/O空间的FFFFh地址内容(指定为4000h)作为引导表的起始地址,通过判别引导表起始地址内的引导标识来确定是8位并行还是16位并行引导方式。若引导标识是10AAh,则是16位的并行引导方式;若引导标识是08AAh,则是8位的并行引导方式。
当从I/O空间FFFFh地址读取不到有效的引导标识时,片内ROM的引导程序即读取数据空间FFFFh的内容作为引导表的起始地址。同样通过判别引导表起始地址内的引导标识来确定是8位并行还是16位并行引导方式。当EPROM数据位宽是8bit时,则要读取数据空间FFFFh地址的内容(低字节)和FFFEh地址的内容(高字节)作为引导表的起始地址。
2.2 硬件实现电路
8bit EPROM引导装载的实现电路如图1所示。
图中D3、D4器件为74AHC373,提供了C5402采集I/O端口地址FFFFh的数据,这里设置为4000h。EPROM选用27C512-60(64k),缓冲器74AHC244作电平变换用,EPROM的片选端和缓冲器的选通端同时接C5402的数据选通信号MSTRB。当程序引导完后,MSTRB为高,缓冲器74AHC244输出为高阻,可以并挂在数据总线上。
当C5402读取I/O端口地址FFFFh时,IOSTRB为低有效,同时地址线A15为高,经反相与IOSTRB信号相“或”,以选通D3、D4器件,C5402即采集到引导表起始地址4000h。当用户不采用从I/O端口读取引导表起始地址时,C5402将读取数据文凭间FFFFh地址的内容和FFFEh地址的内容作为引导表的起始地址。在将程序代码用编程器写入到EPROM时,将EPROM的FFFFh地址和FFFEh内容写定为00和40即可。若使用低于64k的EPROM时,只要在EPROM的最高两个地址写入00和40即可。例如,使用8K EPROM,而C5402的地址线只用到A0~A12,那么在EPROM的1FFFh和1FFEh地址写入00和40即可,并将Hex制转换命令程序中的-bootorg 0x4000句修改为-bootorg 0x0000。
2.3 编制命令文件程序
(1)链接命令文件程序(文件名设为dsp5402lj.cmd):
;dsp5402lj.cmd program
dsp5402.obj ;输入汇编后的文件名
-o dsp5402.out -m dsp5402.map ;设定输出文件名
MEMORY ;内部存储器分配
{
PAGE 0:ROM:origin=0080h length=1000h ;程序引导后首地址和块长度
PAGE 1:RAM:origin=200h length=500h
;定义数据块首地址和块长度
}
SECTIONS
{
-text:>ROM ;将text段定义的程序放入程序页
-bss:>RAM ;将bss段定义的数据块放入数据页
}
(2)Hex制转换命令程序(文件名设dsp5402h.cmd):
;dsp5402h.cmd program
dsp5402.out ;输入链接后的文件名
-o dsp5402.m1 ;定义输出文件名和格式
-m1 ;输入文件格式为Motrola-s1
-memwidth 8 ;定义8位EPROM
-romwidth 8 ;输出文件是字节
-bbtorg 0x4000 ;外扩EPROM存放代码的首地址
-e 0x0080 ;定义引导后程序执行的入口地址
SCTIONS {.text:BOOT}
2.4 创建并行引导表
为充分发挥C5402的引导特点,必须建立一个包含完整数据流的引导表。引导表通过Hex转换应用工具来实现。当执行Hex转换命令程序时,不同的引导方式和引导选项,建立的引导表内容将所不同。引导表的建立包括如下三个步骤:
(1)汇编文件
用C5402汇编语言在文本形式下编程,执行如下命令:
asm500.exe -1 -v548
程序将被汇编成后缀名为obj的目标文件,命令中如文件名缺省,目标文件名与汇编程序源文件名相同。
(2)链接文件
执行命令:lnk500.exe dsp5402lj.cmd
dsp5402lj.cmd为链接命令文件名,由用户编程确定用户代码装载引导的入口地址、程序块长度以及程序段和数据段的分配。引导表内数据的每一个块同等于COFF文件的一个初始化段,初始化段包括:.text,.data,和.sect。未初始化段为:.bss和.usect。
(3)执行Hex转换公用命令程序
执行命令:Hex500.exe dsp5402h.cmd
dsp5402h.cmd为Hex转换命令文件名。对可执行的COFF文件使用Hex转换公用程序进行转换后得到若干种标准的十六进制格式文件。转换后的十六进制格式文件即是引导表的内容,引导表包含并行引导的标识、程序执行的入口地址、程序存放的目的地址、用户程序及用户程序块长度。利用编程器可以将引导表的内容写入EPROM,然后将EPROM插入C5402用户系统中运行。
|