.cmd文件介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26623315/article/details/79182319

.cmd 为连接器命令文件:给出了程序空间和数据空间的设置,及编译后各程序段在程序或数据空间的具体位置。一般情况下该文件主体部分为两个伪指令,MEMORY和SECTIONS。

      MEMORY伪指令定义一个目标系统的存储器映像图,用户可以给存储器各部分命名,指定它们的起始地址和长度。SECTIONS伪指令告诉连接器怎样把输入段组合成输出段,以及把输出段放在存储器的什么位置。

       如下文所示连接器命令文件:

-l rts64plus.lib
-l evmdm6437bsl.lib
 
-stack          0x00001000      /* Stack Size */
-heap          0x00001000      /* Heap Size */

MEMORY

{
    L2RAM:      o = 0x10800000  l = 0x00020000
    DDR2:       o = 0x80000000  l = 0x10000000
}

SECTIONS

{
    .bss        >  L2RAM
    .cinit      >  L2RAM
    .cio        >  L2RAM
    .const      >  L2RAM
    .data       >  L2RAM
    .far        >  L2RAM
    .stack      >  L2RAM
    .switch     >  L2RAM
    .sysmem     >  L2RAM
    .text       >  L2RAM
    .ddr2       >  DDR2
}


       MEMORY伪指令中L2RAM、DDR2为用户指定的存储器的名字,用户可以自行更改。o表示起始地址,l表示长度。起始地址与长度可以在芯片的用户手册中查到,比如DM6437手册中第13页:

 

       SECTIONS中常见的段有.text、.data、.bss、.vectors、.cinit、.stack等,实际上,这些段可分为两类,一类是初始化段,即含有数据和代码如.text、.data。一类是未初始化段,即为未初始化的数据在存储器映像图内预留空间,如.bss。

       常见段的功能:

.text           通常含有可执行代码

.data          通常含有初始化数据

.bss            通常为未初始化变量预留的空间

.vector       中断跳转服务器程序的入口地址数据

.cinit          初始化的全局变量和静态变量表

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

.pinit          全局对象的构造函数表

.switch        switch语句产生的表

.const         初始化的全局和静态的const变量和字符串常量

.sysmem     程序中的malloc 、calloc、和realoc 函数动态分配

注:伪指令是用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序识别并指导汇编如何进行。

猜你喜欢

转载自blog.csdn.net/qq_26623315/article/details/79182319