工程师你好!
我目前正在使用双核F28M35芯片进行项目开发,按照说明书里M3有32K的16位RAM,C28有36K的16位RAM,共享RAM有64K,可是我在C28系统里为什么只能定义2K,再往大定义到4K就编译不过去了。
错误如下:
"C:\F28M35\F28M35x_common\cmd\F28M35x_generic_C28_FLASH.cmd", line 148: error #10099-D:
program will not fit into available memory. run placement with
>> Compilation failure
alignment/blocking fails for section ".ebss" size 0x1060 page 1. Available
memory ranges:
RAML2 size: 0x1000 unused: 0x1000 max hole: 0x1000 error #10010: errors encountered during linking; "D_blinkly_dc_c28.out" not
built
gmake: *** [D_blinkly_dc_c28.out] Error 1
gmake: Target `all' not remade because of errors.
**** Build Finished ****
后来我指定了
Uint16 Mc_Dat1[2048];
Uint16 Mc_Dat2[2048];
#pragma DATA_SECTION(Mc_Dat1,"SHARERAMS0");
#pragma DATA_SECTION(Mc_Dat2,"SHARERAMS0");
这样的声明,用来使用共享RAM区
可是在McBSP口采集到的数据往这两个数组里放,根本放不进去,debug调试的时候,一直都是0,,McBSP口确实有数据过来。
Mc_Dat1[Mc_Cnt]= McbspaRegs.DRR1.all;仿真的时候,这里DRR1可以看到数据。
Mc_Cnt++;
请问cmd文件该如何编写呢
JianXue Chen:
问题已经解决,C28要使用共享RAM,必须在M3的初始化程序里进行声明。
RAMMReqSharedMemAccess((S0_ACCESS | S1_ACCESS | S2_ACCESS),C28_MASTER);
这句表明,S0、S1、S2三个区可以供C28使用。