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文件:

原文地址:https://www.cnblogs.com/kongqiweiliang/p/4146547.html