Board logo

标题: DSP学习 [打印本页]

作者: miaoqiang020103    时间: 2008-2-29 13:31     标题: DSP学习



(二) 链接器对块的处理

链接器对块的处理有两个功能:其一,将COFF目标文件中的块用来建立程序块和数据块,并将这些块组合成可以被DSP芯片执行的COFF输出模块;其二,链接器为输出块指定存储位置。
链接器提供两个命令实现上述功能:MEMORYSECTIONSMEMORY命令定义目标系统的存储器,程序员可以定义每一块存储器并指定起始地址和长度;SECTIONS命令用来定义输入块的组合和输出块在存储器中的存放位置。若不用MEMORYSECTIONS命令,链接器采用缺省的分配算法;推荐使用这两个命令,但要注意这两个命令在CMD文件(链接器命令文件)中使用。
下面分析一个TMS320F240芯片的典型CMD 文件。(假设文件名EX1.CMD
1
CMD文件的构成及其详细解释
BOOT.OBJ /* F240
的中断矢量表,参见后面的说明 */
EX1.OBJ /*
源程序编译后对应的目标文件 */
/*
若程序有多个目标文件,一块写在这里 */
-STACK 0X400 /*
设定系统堆栈 */
-C /* ROM
初始化 */
-O EX1.OUT /*
输出的文件名 */
-M EX1.MAP /*
输出映像文件名 */
-L RTS2XX.LIB /*
链入RTS2XX.LIB */
MEMORY /*MEMORY
命令规定系统的存储器配置 */
{
PAGE 0
ROM0 origin=0000hlength=003fh /* FLASH ROM */
PAGE 0
ROM1 origin=0040hlength=0200h /*FLASH ROM */
PAGE 0
ROM2 origin=0240hlength=3000h /* FLASH ROM */
PAGE 1
RAM_B2origin=0060hlength=0020h /* 内部RAM B2 */
PAGE 1
RAM_B1origin=0300hlength=0100h /* 内部RAM B1 */
PAGE 1
RAM_B0origin=0100hlength=0100h /* 内部 RAM B0 */
PAGE 1
RAM_EXorigin=0d000hlength=2800h /* 外部扩展RAM */
}
SECTIONS /* SECTIONS
命令规定了程序中块的具体分配方法 */
{
.vectors
load=ROM0 /* 规定矢量表的存放位置 */
.cinit
load=ROM1 /* C初始化表的存放位置 */
.text
load=ROM2 /* 系统程序的存放位置 */
.bss load=RAM_B0 /*
未初始化数据的存放位置 */
.const load=RAM_B1 /*
已初始化数据的存放位置 */
}








欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0