• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > DSP芯片TMS320C6712的外部内存自引导功能的实现

DSP芯片TMS320C6712的外部内存自引导功能的实现

录入:edatop.com     点击:

(1) 中断向量表 vectors.asm

中断向量表缺省保存在DSP芯片内部RAM的0地址开始的0x200字节空间,上电或复位后,芯片自动运行复位中断。因此,复位中断向量设置为引导程序(_boot)的入口地址,引导程序的主体在boot.asm中定义。部分程序如下:

.ref _boot ;调用引导程序

.sect ".vectors" ;段声明

RESET_RST: ;复位中断向量

mvkl .S2 _boot, B0 ;装载引导程序地址

mvkh .S2 _boot, B0

B .S2 B0 ;跳转到引导程序执行

NOP 5

(2) 自引导的汇编程序 boot.asm

自引导汇编程序主要是配置基本的寄存器,并将保存在外部FLASH中的二进制程序拷贝到DSP内部的RAM中再执行。由于TMS320C6712自动拷贝1KB,因此起始地址是从0x400开始,汇编程序如下:

.sect ".boot_load" ;定义数据段

.ref _c_int00 ;声明外部函数

.global _boot ;定义全局函数

_boot:

;先设置控制寄存器,如EMIF_GCR等,(略)

;拷贝FLASH中的程序到DSP内部RAM

mvkl 0x00000400, A4 ;A4为RAM地址指针

|| mvkl 0x90000400, B4 ;B4为FLASH地址指针

mvkh 0x00000400, A4

|| mvkh 0x90000400, B4

zero A1 ;A1用作计数器

_boot_loop: ;DSP开始读取FLASH中程序

ldb *B4++, B5

mvkl 0x0000F200, B6 ;B6为需要拷贝的字节数

add 1, A1, A1

|| mvkh 0x0000F200, B6

cmplt A1, B6, A0

nop

stb B5, *A4++

[B0] b _boot_loop

nop 5

mvkl .S2 _c_int00, B0 ;循环结束后,跳转到主函数main执行

mvkh .S2 _c_int00, B0

B .S2 B0

Nop 5

(3) 主程序 main.c

主程序是DSP要实现具体功能的主体,其定义的主函数main()经编译后在函数_c_int00中调用,因此在上面的引导程序结束时,将跳转到函数_c_int00,即主函数main执行。

(4) 链接命令程序 link.cmd

链接命令程序用于定义系统各存储器的地址及大小,并分配编译后各段到相应的存储空间,link.cmd内容如下:

-c

-lrts6201.lib

MEMORY

{

vecs: o = 00000000h =00000200h

BOOT_RAM: o = 00000200h l = 00000200h

IRAM: o = 00000400h l = 0000c400h

CE0: o = 80000000h l = 01000000h

CE1: o = 90000000h l = 00100000h

}

来源:维库开发网

上一篇:基于TLl6C550C的DSP异步串行通信的实现
下一篇:基于FPGA的DDS设计及实现

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图