cmd c语言 文件,DSP,如何编写CMD文件!(转)

刚找到的资料,虽然不够全,希望能帮到你。。。

祝愿同在努力的你,成功

a4c26d1e5885305701be709a3d33442f.png

CMD文件的作用:

在DSP里,程序执行过程中也有好多地方需要跳转,所以需要跳转的目标地址。如果你在编程序时知道你所要跳转的地址,那就更好的,但实际上,这是很不好控制的。所以就产生了.CMD。它有一个最大的好处,可以把每个段分配地址,所以比如你想从一个段跳到另一个段的时候,就很方便的知道这个段的起始地址。

CMD

它是用来分配rom和ram空间用的,告诉链接程序怎样计算地址和分配空间.所以不同的芯片就有不同大小的rom和ram.放用户程序的地方也不尽相同.所以要根据你的芯片进行修改.cmd文件分两部分.MEMORY和SECTIONS.

MEMORY

{

PAGE 0 ..........

PAGE 1.........

}

SECTIONS

{SECTIONS

{

.vectors .................

.reset .................

................

}

MEMORY是用来指定芯片的rom和ram的大小和划分出几个区间.

PAGE 0 对应rom;PAGE 1对应ram

PAGE 里包含的区间名字与其后面的参数反映了该区间的起始地址和长度.

如: PAGE 0 : VECS(区间名字): origin(起始地址) = 0h , length (长度)=040h

SECTIONS:(在程序里添加下面的段名如.vectors.用来指定该段名以下,另一个段名以上的程序(属于PAGE0)或数据(属于PAGE1)放到“>”符号后的空间名字所在的地方。

如引用字段名“.vectors ”的程序或数据将被放到VECS ,VECS是PAGE0即是ROM空间 00H至40H的地方

SECTIONS

{

.vectors : { } > VECS PAGE 0

.reset : { } >

VECS PAGE 0

............

}

.vectors,.reset都是段名。 加不加“.”随你便,即.vectors表示名为 “.vectors”的段。

{}表示段的全部,{}> VECS PAGE 0表示将段的全部放入名为 VECS PAGE

0的内存区。

example:

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

.const : { } > SARAM PAGE 1

.data : { } > SARAM PAGE 1

.bss : { } > SARAM PAGE 1

.stack : { } > SARAM PAGE 1

.sysmem : { } > SARAM PAGE 1

}

1,系统定义:

.cinit 存放C程序中的变量初值和常量;

.const 存放C程序中的字符常量、浮点常量和用const声明的常量;

.switch 存放C程序中switch语句的跳针表;

.text 存放C程序的代码;

.bss 为C程序中的全局和静态变量保留存储空间;

.far 为C程序中用far声明的全局和静态变量保留空间;

.stack 为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;

.sysmem 用于C程序中malloc、calloc和realloc函数动态分配存储空间

2,用户定义:

#pragma CODE_SECTION (symbol, "section name";

#pragma DATA_SECTION (symbol, "section name"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值