DM642学习:CMD、GEL文件
在建立ccs工程的时候,cmd文件和gel文件非常重要,如不能配置好会出现一些莫名其妙的问题。
1. CMD文件:
不同的DSP芯片内集成的存储器大小各异,但其配置方式是类似的。大家可通过查阅DSP芯片的数据手册,了解芯片内部存储空间大小。在实际的配置过程中,可根据开发程序的实际代码,正确的划分程序和数据空间中各段的大小,使其空间配置达到最优。
CMD主要是用来分配rom和ram空间用的,它告诉链接程序怎样计算地址和分配空间.所以不同的芯片就有不同大小的rom和ram.放用户序的地程方也不尽相同.所以要根据芯片进行修改.分两部分.MEMORY和SECTIONS.
MEMORY
{
PAGE 0 ..........
PAGE 1.........
}
SECTIONS
{
.vectors .................
.reset .................
................
}
MEMORY是用来指定芯片的rom和ram的大小和划分出几个区间.PAGE 0 对应rom,PAGE 1对应ram。PAGE里包含的区间名字与其后面的参数反映了该区间的起始地址和长度.
SECTIONS:在程序里添加段名.XXXX(如.vectors.)用来指定该段名以下,另一个段名以上的程序(属于PAGE0)或数据(属于PAGE1)放到“>”符号后的空间名字所在的地方。
MEMORY
{
PAGE 0 :
VECS : origin = 00000h, length = 00040h
LOW : origin = 00040h, length = 03FC0h
SARAM : origin = 04000h, length = 00800h
B0 : origin = 0FF00h, length = 00100h
PAGE 1 :
B0 : origin = 00200h, length = 00100h
B1 : origin = 00300h, length = 00100h
B2 : origin = 00060h, length = 00020h
SARAM : origin = 08000h, length = 00800h
}
SECTIONS
{
.text : { } > LOW PAGE 0 存放程序代码
.cinit : { } > LOW PAGE 0 存放程序中的变量初值和常量
.switch : { } > LOW PAGE 0 存放程序中switch语句的跳转地址表
.const : { } > SARAM PAGE 1 量存放程序中的字符常量、浮点常量和用const声明的常
.data : { } > SARAM PAGE 1
.bss : { } > SARAM PAGE 1 为程序中的全局和静态变量保留存储空间
.stack : { } > SARAM PAGE 1 为程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果
.sysmem : { } > SARAM PAGE 1 用于程序中的malloc 、calloc 、和realoc 函数动态分配存储空间.text可执行代码
}
2. GEL文件: