各位好!
之前使用ccs3.3创建2812的工程时,一般直接在TCF文件中手动的去重新分配存储器的地址范围,然后生成的cmd文件中也可以看到具体分配的结果。
目前使用ccs5想对6678的工程也对存储器地址范围进行一个分配,但是没有找到方法。
从网上找到的一个工程中实现了这种分配,从编译过程中生成的link.cmd文件可以看出分配结果如下:
MEMORY
{
L2SRAM (RWX) : org = 0x800000, len = 0x40000
MSMCSRAM_MASTER (RWX) : org = 0xc000000, len = 0x100000
MSMCSRAM_SLAVE (RWX) : org = 0xc100000, len = 0x100000
MSMCSRAM_IPC (RWX) : org = 0xc200000, len = 0x200000
DDR3 (RWX) : org = 0x80000000, len = 0x10000000
}
同时,该cmd文件有说明如下,文件是自动生成的,每次clean project后就会消失,所以修改这个cmd文件不是最好的办法。
/*
* Do not modify this file; it is automatically generated from the template
* linkcmd.xdt in the ti.targets.elf package and will be overwritten.
*/
求助各位具体应该如何实现存储器地址的重新分配,是修改tcf文件么?还是应该怎么办?
ying jiang:
你是想把固定地址分配给固定数组么?
miker wang:
1、在CCS5中地址范围分配就是根据cmd文件来实现的,我目前没有接触到你所说的TCF文件。
2、如果你只是创建最简单的CCS project,cmd文件可以手动添加,并且随意修改。如果你的工程需要用到实时操作系统,比如SYS/BIOS,对应的是RTSC project,那这时的cmd文件是在编译的时候自动生成,并且无法修改。
3、使用自己定义的cmd文件对工程进行编译之后,可以在debug或者release目录下的map文件里查看详细的内存分配情况。
Tony Fang:
1.CCSV5的存储器分配一方面是通过cmd文件中完成,可以在cmd中指定L2,DDR3,MSMC等存储区域的物理起始地址,长度等。并且cmd文件不会在clean project时消失,在编译时,编译器根据cmd文件进行存储器分配,变量定位等,编译完成会生成一个.map文件,这个文件有编译完成后各个存储区的分配、使用情况,以及各个段的具体放置位置等,您可以参考,这个文件会随着clean project时消失。
2.另一方面CCSV5支持在cfg文件中进行存储区域分配(与cmd功能一致),cfg文件是CCSV5对SYS/BIOS操作系统进行配置的工具,在cfg文件中进行了文件分配后,就不用cmd文件了。