nop
nop
nop
1d #0ff80h,a ;移植中断向量表,
0xff80为中断向量表的旧起始地址
stm # VECT_NEW,arl;VECT_NEW表示中断向量表的新起始地址
rpt#(VECT_LEN_1);VECT_LEN表示中断向量表的长度
reada * arl+
nop
ld # MAIN_OLD,a ;移植用户程序段,
MAm_OlD表示用户程序段的旧起始地址
stm # MAIN-NEW,arl ;MAIN_NEW表示用户程序段的新起始地址
rpt#(MAIN_LEN_1) ;MAIN_LEN表示用户程序段的长度
reada * arl+
endboot:
orm # 020h,@ldh ;
设置OVLY=1,使得内部RAM同时映射到DSP数据和程序空间
ld # MAIN_NEW,a
bacc a ;程序指针指向用户程序段的起始地址
.end
用户程序段(main.asm)代码如下:
.def main_start
.sect "main_prg"
main_start:
loop: rsbx xf ;实现XF的复位和置位
nop
ssbx Xf
nop
b loop
.end
中断向量表(vect.asm)如下:
.mmregs
.Ief main_ start
.ref lOad_start
.def reset
.def nmi
.sect''.vectors''
reset: bd load_start ;加电后,跳转到自启程序段起始地址
stm #200,sp
nmi: rete ;
此表中只包含NMI中断入口,也可以类似添加其他中断入口
nop
nop
nop
.end
连接命令文件(boot.cmd)的配置如下:
vect.obj
main.obj
load.obj
-O boot.out
SECTIONS
{
main_prg:load=MAIN_OID,run=MAIN_NEW
vectors: load=0ff80h,run=VECF_NEW
load_prg:load=0f800h
}
上述引导程序经过CCS编译及连接后,生成的目标文件boot.out是TMS320VC5410能够识别的COFF格式,但是M29W400T不支持这种格式,所以不能直接写入FLASH中。而CCS自身带有多种HEX类型的转换程序。因此,在经过格式转换后,即可得到对应于上文提到的一系列数据和地址mydata和myaddress,此时就可以在联机情况下利用CCS以DSP软件编程方式将目标代码写入到M29W400T之中。一旦写入成功,便可以脱机加电自启系统。同时,在经一段时间后,还可用示波器测得XF管脚输出的均匀脉冲方波,以证明引导装载成功。
参考文献
1.TI CO.TMS320VC5410Fixed-point Digital SignalProcessor Data Manual.2000.12
2,TI CO.TMS320C54x Assembly Language Tools User'SGuide.1999.12
3.ST CO.M29W400 Data Sheet.1999.11
4.ST CO.SOFtware Drivers fOr M29F400 and M29W400FLASH Memories.2000.3
本文关键字:软件编程 DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术