TMS320C6711的FLASH引导装载系统研究与设计
BOOT_SIZE .equ 0x9800 ;待装载代码的大小
FLASH_START .equ 0x90000000 ;FLASH起始地址
BOOT_START .equ 0x0000000 ;L2 sram起始地址
EMIF_GCR .equ 0x01800000 ;EMIF全局控制寄存器的地址
EMIF_CE1 .equ 0x01800004 ;CE1空间控制寄存器的地址
EMIF_CE1-8 .equ 0x1161C901 ;CE1空间控制寄存器的值
.sect ".boot_load"
.global_boot
.ref_c_int00
_boot:
mvkl EMIF_GCR,A4
mvkl 0x3300,B4
mvkh EMIF_GCR,A4
mvkh 0x3300,B4
stw B4,*A4 ;配置EMF全局控制寄存器
mvk1 EMIF_CE1,A4
mvk1 EMIF_CE1-8,B4
mvkh EMIF_CE1,A4
mvkh EMIF_CE1-8,B4
stw B4,*A4 ;配置CE1空间控制寄存器
mvkl BOOT_START+1024,A4 ;待搬移数据的目标地址
mvkl FLASH_START+1024,B4 ;待搬移数据的源地址
mvkh BOOT_START+1024,A4
mvkh FLASH_START+1024,B4
zer0 A1
_boot_loop1: 数据搬移
ldb *B4++,B5
mvkl BOOT_SIZE,B6
add 1,A1,A1
mvkh BOOT_SIZE,B6 ;B6为待搬移数据块大小,可根据实际情况来修改
cmplt A1,B6,B0
nop
stb B5,*A4++
[B0]b_boot_loop1
nop 5
mvk1 .S2_c_init00,B0
mvkh .S2_c_int00,B0
B .S2 B0 ;转向C程序的入口
nop 5
3.4 FLASH编程
建立好了上述定制代码段、用户程序段、中断向量表和链接命令文件后,便可利用TI公司的DSP集成开发环境CCS进行编译、调试及链接,之后生成的目标文件*.out就是DSP能够识别的COFF格式。为了使系统能够脱机运行,需要把该目标文件的代码写入FLASH中,往FLASH中写入目标代码可以采用以下两种方法:
(1)用硬件仿真器XDS510/560通过JTAG口对FLASH进行在线编程。此时需要把*.out文件数据放入缓冲存储器,然后按照FLASH芯片手册提供的编程格式把缓冲存储器里的数据写入FLASH。
(3) 利用编程器进行编程。由于编程器不支持*.out文件模式,不能直接写入FLASH中,所以必须将*.out文件转换成编程器可读入的*.hex格式,这可以通过CCS软件中的转换工具hex6x来实现,转换时要注意hex.cmd文件的写法,而且整个文件转换过程是在DOS提示符下完成的。
4 结论
利用上述方法可使系统在脱机状态下实现引导装载,本次实验所用的用户代码段的功能是利用 DSP的多通道缓冲串口发送一个字符串给PC机的RS232口。按照前面的方法写好定制代码段、用户程序段、中断向量表和链路命令文件并进行编译、链接、格式转换以及写入FLASH之后,系统就可以实现脱机运行了。这样,给DSP系统加电后,就可以通过串行口调试软件在PC机上接收到DSP所发送的字符串以证明引导装载成功。由于用户代码段也可以被其它程序代替,因此,本文设计的引导装载系统其有一定的通用性。