您好!
我最近迷茫在CMD文件以及GEL文件中,有几个疑惑想请教一下!
1、关于CMD文件的作用以及实际意义,如果有相应的文档可以发个链接吗?谢谢
2、我在使用研旭的开发板时发现,CMD中没有分配SDRAM地址(Memory Map中是有定义),只是在程序中写了起始地址0xc000 0000,结果可以正常运行,不知道这种情况怎么回事?
3、关于GEL文件,我也有同样的疑惑,不知道它的用途,及如果根据我的开发需要来修改,如果有具体的例子,最好了。
希望多多指教!谢谢!
fei cheng:
求教!
Shine:
1. cmd的作用告诉编译器代码段, 数据段等各个段放在哪块地址. 语法见下面的文档第8.5 Linker Command Files章节.http://www.ti.com/lit/ug/spru186x/spru186x.pdf2. CMD文件是怎么样的? cmd文件一般按照memory map来写的, 看你程序数据需要放在哪块memory. 3. GEL文件是在CCS 调试阶段用的, 初始化功能, 如, 要把程序加载到片外SDRAM, 此时需要在GEL文件对SDRAM进行初始化. http://processors.wiki.ti.com/index.php/GEL
fei cheng:
回复 Shine:
您好!感谢您的解答,有两点我还是不太明白,
1、cmd的告诉编译器各个数据程序段放在哪里,如果缺省时,但程序中用到了会怎么样?比如我最初提出的问题,SDRAM在cmd中没有分配地址,但却可以正确的读写数据,这怎么解释?其cmd文件为:
-stack 0x00001000 /* Stack Size */-heap 0x00001000 /* Heap Size */
MEMORY{ VECS: o = 0x00800000 l = 0x00000800 ARMRAM: o = 0xFFFF0080 l = 0x00001f80 DSPL2ROM: o = 0x00700000 l = 0x000FFFFF DSPL2RAM: o = 0x00800f00 l = 0x0003f000 DSPL1PRAM: o = 0x00E00000 l = 0x00008000 DSPL1DRAM: o = 0x00F00000 l = 0x00008000 SHAREDRAM: o = 0x80000f00 l = 0x0001ffff}
SECTIONS{ ".vectors" > VECS .data > DSPL2RAM .bss > DSPL2RAM .cinit > DSPL2RAM .cio > DSPL2RAM .const > DSPL2RAM .stack > DSPL2RAM .sysmem > DSPL2RAM .text > DSPL2RAM .switch > DSPL2RAM .far > DSPL2RAM .calcbuffer > DSPL2RAM .compxbuf > DSPL2RAM
}
2、GEL文件作用是初始化,但是主程序已经做了初始化了,GEL文件岂不是重了?而且好多程序都是公用的一个GEL文件,对其本质还是不能理解。
还望您可以给出解答,谢谢!
Shine:
回复 fei cheng:
1. 代码是放在片上L2RAM上运行, 所以有没有分配片外SDRAM没有关系. 2. 上次回复中已经举过例子, 如果程序要load到片外SDRAM运行, 就需要用GEL文件事先对SDRAM进行初始化后, CCS才能把代码load到片外, 否则CCS会报错.