DSP+FLASH引导装载系统的设计与实现
rpt #(VECT_LEN-1) ;VECT_LEN表示中断向量表的长度
reada *ar1+
nop
ld #MAIN_OLD,a ;移植用户程序段,MAIN_OLD表示用户程序段的旧起始地址
stm #MAIN_NEW,ar1 ;MAIN_NEW表示用户程序段的新起始地址
rpt #(MAIN_LEN-1) ;MAIN_LEN表示用户程序段的长度
reada *ar1+
endboot:
orm #020h,@1dh ;设置OVLY=1,使得内部RAM同时映射到DSP数据和程序空间
ld #MAIN_NEW,a
bacc a ;程序指针指向用户程序段的的起始地址
.end
用户程序段(main.asm)如下:
.def main_start
.sect "main_prg"
main_start:
USER_PRG ;此处添加用户程序段
.end
中断向量表(vect.asm)如下:
.mmregs
.ref 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_OLD,run=MAIN_NEW
vectors: load=0ff80h,run=VECT_NEW
load_prg: load=0f800h
《DSP+FLASH引导装载系统的设计与实现(第3页)》