CMD的专业名称叫链接器配置文件,是存放链接器的配置信息的,我们简称为命令文件,其中比较关键的就是MEMORY和SECTIONS两个伪指令的使用,常常令人困惑,系统出现的问题也经常与它们的不当使用有关,不过好像TI文档并没有详细CMD配置说明。
MEMORY和SECTIONS两个伪指令的相关语句,必须大写。MEMORY,用来配置目标存储器,SECTIONS用来指定段的存放位置。
下面是我经常用的2407的简化写法大家参考,这个CMD配置用于烧写FLASH完全足够,而且配置相对比较优化。程序从0x0060是要避开加密位,不从0x0044开始更可靠一点,我查看了很多CMD例子中多数都是从0x0060开始写程序。该文件配置没有使用B2。
-stack 512
MEMORY
{
PAGE 0: VECS: origin = 0x0000, length 0x0040
PAGE 0: PROG: origin = 0x0060, length 0x6000
PAGE 1: B0B1 : origin = 0x200, length 0x200
PAGE 1: SARAM: origin = 0x0860, length 0x07FF
}
SECTIONS
{
vectors : {} >VECS PAGE 0 /* 中断向量表 */
.text : {} >PROG PAGE 0 /* 可执行代码和字符串 */
.cinit : {} >PROG PAGE 0
.data : {} >SARAM PAGE 1 /* 初始化变量和常数表 */
.bss : {} >SARAM PAGE 1 /* 保留全局变量和静态变量空间 */
.const : {} >SARAM PAGE 1 /* 字符串和switch表 */
.switch : {} >PROG PAGE 0 /* 包含.switch语句建立的表格 */
.stack : {} >B0B1 PAGE 1 /* 为系统堆栈分配存储器 */
.system : {} > SARAM PAGE 1 /* 为动态存储器函数分配存储器空间 */
}