您好:
目前我在别人的一个dsp工程上继续做开发,鉴于需求,需要把分配的MSMCSRAM的大小调小一些。
下面为目前的map,
name origin length used unused attr fill
———————- ——– ——— ——– ——– —- ——–
L2SRAM 00800000 00080000 00016d28 000692d8 RW X
MSMCSRAM 0c000000 00400000 00102700 002fd900 RW X
DDR3 80000000 02000000 004da9e9 01b25617 RW X
DDR3_SM 88000000 04000000 00000000 04000000 RW
—————————————————————————————————-
下面为.cmd文件:
SECTIONS
{
.init_array: load >> L2SRAM
.srioSharedMem: load >> MSMCSRAM
.qmss: load >> MSMCSRAM
.cppi: load >> MSMCSRAM
.shmETH2MACdata load >> MSMCSRAM
.shmMAC2ETHdata load >> MSMCSRAM
}
CMD文件中只有以上内容,没有指定MSMCSRAM起始地址和长度的代码。
下面为编译后Debug文件夹中linker.cmd中和MSMCSRAM相关的部分:
–args 0x0
-heap 0x0
-stack 0x10000
MEMORY
{
L2SRAM (RWX) : org = 0x800000, len = 0x80000
MSMCSRAM (RWX) : org = 0xc000000, len = 0x400000
DDR3 (RWX) : org = 0x80000000, len = 0x2000000
DDR3_SM (RW) : org = 0x88000000, len = 0x4000000
}
我的问题是我该怎么修改MSMCSRAM的len?
(
MEMORY
{
MSMCSRAM: o = 0x0C000000 l = 0x003E0000
}
在.cmd中加入以上代码后编译出错,错误信息如下:
<Linking>
"../C0_add.cmd", line 5: error: MSMCSRAM memory range has already been
specified
"../C0_add.cmd", line 5: error: MSMCSRAM memory range overlaps existing memory
range MSMCSRAM
)
另外,RTSC中使用的是自定义的platform。我看TI用户手册上有说使用platform wizard配置内存分配,但我无法选择此自定义的platform。
L G2:
你可以参考DDR的分配,将MSM分为两部分。我是这样想的,你可以试试
Allen35065:
你用的是BIOS操作系统吧,这样的话需要在Platform定义中指定内存段,或者需要自己新建一个Platform,详见BIOS User Guide.