![](https://csdnimg.cn/release/download_crawler_static/87223932/bg4.jpg)
链接器提供两个命令实现上述功能:MEMORY 和 SECTIONS。MEMORY 命令定义
目标系统的存储器,程序员可以定义每一块存储器并指定起始地址和长度;SECTIONS 命令
用来定义输入块的组合和输出块在存储器中的存放位置。若不用 MEMORY 和 SECTIONS
命令,链接器采用缺省的分配算法;推荐使用这两个命令,但要注意这两个命令在 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=0000h,length=003fh /* FLASH ROM */
PAGE 0:ROM1: origin=0040h,length=0200h /*FLASH ROM */
PAGE 0:ROM2: origin=0240h,length=3000h /* FLASH ROM */
PAGE 1:RAM_B2:origin=0060h,length=0020h /* 内部 RAM B2 */
PAGE 1:RAM_B1:origin=0300h,length=0100h /* 内部 RAM B1 */
PAGE 1:RAM_B0:origin=0100h,length=0100h /* 内部 RAM B0 */
PAGE 1:RAM_EX:origin=0d000h,length=2800h /* 外部扩展 RAM */
}
SECTIONS /* SECTIONS 命令规定了程序中块的具体分配方法 */
{
.vectors:load=ROM0 /* 规定矢量表的存放位置 */
.cinit: load=ROM1 /* C 初始化表的存放位置 */
.text: load=ROM2 /* 系统程序的存放位置 */