C6678多核DSP——CMD文件介绍

CMD文件编写

cmd:链接器配置文件,存放链接器的配置信息,cmd文件使开发者可以通过自己定义的存储器模块来配置系统存储器,说白点也就是cmd是用来分配ROM和RAM空间用的,告诉链接程序怎样计算地址和分配空间。

MEMORY命令:描述系统实际的硬件资源

SECTION命令:描述“段”如何定位

其中比较关键的就是MEMORY和SECTIONS两个伪指令的使用,MEMORY用来建立目标存储器的模型,SECTIONS指令就可以根据这个模型来安排各个段的位置,MEMORY指令可以定义目标系统的各种类型的存储器及容量。

把hello world里的CMD文件拷上来分析一下:

-heap是堆,我这里分出3M是因为我把所有段都分配在了Share RAM(SHRAM)上,L2一共有4M。

-stack 是栈,一般都是这么大。

memory是L1、L2、SHRAM、EMIF和DDR3的地址范围和大小,一般的应用都会用DDR3,由于我的板卡还没开发DDR3,就只好都用SHRAM了。

section里的字段:

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

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

.switch 存放程序中switch语句的跳转地址表

.text 存放程序代码

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

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

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

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

/*************************************************************************/

-c

-heap  0x300000 /*3MB*/

-stack0x10000

MEMORY

{

    LOCAL_L2_SRAM:  o = 0x00800000 l = 0x00080000   /* 512kB LOCAL L2/SRAM */

    LOCAL_L1P_SRAM: o = 0x00E00000 l =0x00008000   /* 32kB LOCAL L1P/SRAM */

    LOCAL_L1D_SRAM: o = 0x00F00000 l =0x00008000   /* 32kB LOCAL L1D/SRAM */

    SHRAM:         o = 0x0C000000 l = 0x00400000   /* 4MB Multicore shared Memmory */

   

    EMIF16_CS2:     o = 0x70000000 l = 0x04000000   /* 64MB EMIF16 CS2 Data Memory */

    EMIF16_CS3:     o = 0x74000000 l = 0x04000000   /* 64MB EMIF16 CS3 Data Memory */

    EMIF16_CS4:     o = 0x78000000 l = 0x04000000   /* 64MB EMIF16 CS4 Data Memory */

    EMIF16_CS5:     o = 0x7C000000 l = 0x04000000   /* 64MB EMIF16 CS5 Data Memory */

    DDR3:          o = 0x80000000 l = 0x80000000   /* 2GB CE0 and CE1 external DDR3 SDRAM */

}

SECTIONS

{

    .text         >  SHRAM

    .stack        >  SHRAM

    .bss          >  SHRAM

    .cio          >  SHRAM

    .const        >  SHRAM

    .data         >  SHRAM

    .switch        > SHRAM

    .sysmem       >  SHRAM

    .far          >  SHRAM

    .args          > SHRAM

    .ppinfo        > SHRAM

    .ppdata        > SHRAM

    /* COFF sections */

    .pinit        >  SHRAM

    .cinit        >  SHRAM

    /* EABI sections */

    .binit         > SHRAM

    .init_array    > SHRAM

    .neardata      > SHRAM

    .fardata       > SHRAM

    .rodata       >  SHRAM

    .c6xabi.exidx  > SHRAM

    .c6xabi.extab  > SHRAM

}
 

发布了0 篇原创文章 · 获赞 123 · 访问量 88万+

猜你喜欢

转载自blog.csdn.net/kunkliu/article/details/104280451
今日推荐