1540|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

TMS320C6212的ROM引导实例 [复制链接]

(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

}

SECTIONS

{

.vectors > vecs fill = 0

.boot_load > BOOT_RAM fill = 0

.text > IRAM fill = 0

.stack > IRAM fill = 0

.bss > IRAM fill = 0

.cinit > IRAM fill = 0

.far > IRAM fill = 0

.sysmem > IRAM fill = 0

.cio > IRAM fill = 0

}

(5) 转换命令程序 convert.cmd

上面的工程文件经CCS系统编译、汇编后生成可执行COFF文件(.out),它需要转换为二进制文件,再写入到FLASH中。CCS开发系统带有转换程序:


hex6x.exe 将可执行COFF文件(.out)转换为十六进制文件(.hex)

hex2bin.exe将十六进制文件(.hex)转换为二进制文件(.bin)

命令行的格式为:

hex6x.exe convert.cmd

hex2bin.exe mboot

其中convert.cmd内容如下:

mboot.out ;输入文件名 .out 格式

-x

-map mboot.map ;生成映射文件

-image

-memwidth 8 ;内存的位宽

-o mboot.hex ;输出文件名 .hex格式

ROMS

{

FLASH: org = 0, len = 0x10000, romwidth = 8

}



点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表