我的程序编译出现下述问题:
[Linking...] "C:\CCStudio_v3.3\C2000\cgtools\bin\cl2000" -@"Debug.lkf"
<Linking>
"E:\\dsp\\JN_flash_28027\\Upgrade28027\\Example_Flash28027_API.cmd", line 137: error:
run placement fails for object ".ebss", size 0x9c9 (page 1). Available
ranges:
DRAML0 size: 0x9c8 unused: 0x9c8 max hole: 0x9c8
"E:\\dsp\\JN_flash_28027\\Upgrade28027\\Example_Flash28027_API.cmd", line 125: error:
run placement fails for object "ramfuncs", size 0x209 (page 0). Available
ranges:
PRAML0 size: 0x638 unused: 0x103 max hole: 0x103
error: errors encountered during linking; "./Debug/Example_Flash2802x_API.out"
not built
>> Compilation failure
Build Complete,
3 Errors, 0 Warnings, 0 Remarks.
其中地址分配如下:
MEMORY
{
PAGE 0: /* Program Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
PRAML0 : origin = 0x008000, length = 0x000638 /* on-chip RAM block L0 */
/*PRAML0 : origin = 0x008000, length = 0x000538*/ /* on-chip RAM block L0 */
OTP : origin = 0x3D7800, length = 0x000400 /* on-chip OTP */
/*FLASHD : origin = 0x3F4000, length = 0x001000*/ /* on-chip FLASH */
/*FLASHC : origin = 0x3F5000, length = 0x001000*/ /* on-chip FLASH */
/*FLASHC : origin = 0x3F4000, length = 0x002000*/ /* on-chip FLASH */
FLASHC : origin = 0x3F4000, length = 0x001C00 /* on-chip FLASH */
//FLASHA : origin = 0x3F7000, length = 0x000F80 /* on-chip FLASH */
FLASHA : origin = 0x3F6C00, length = 0x001380 /* on-chip FLASH */
CSM_RSVD : origin = 0x3F7F80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
CSM_PWL_PROG: origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
IQTABLES : origin = 0x3FE000, length = 0x000B50 /* IQ Math Tables in Boot ROM */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008C /* IQ Math Tables in Boot ROM */
IQTABLES3 : origin = 0x3FEBDC, length = 0x0000AA /* IQ Math Tables in Boot ROM */
ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */
VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */
PAGE 1 : /* Data Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
/* Registers remain on PAGE1 */
BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */
RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
DRAML0 : origin = 0x008638, length = 0x0009c8 /* on-chip RAM block L0 */
/*DRAML0 : origin = 0x008538, length = 0x000Ac8*/ /* on-chip RAM block L0 */
FLASHB : origin = 0x3F6000, length = 0x001000 /* on-chip FLASH */
}
有以下问题:
1、我查了一下有的说是RAM地址分配有问题,我按照错误提示的长度修改过相应存储空间大小,但改过后还是会反复出现,请大神指点一下问题出在哪里?
2、上面提示错误“DRAML0 size: 0x9c8 unused: 0x9c8 max hole: 0x9c8 ”分配 size: 0x9c8 ,不能用的“unused: 0x9c8”,是不是DRAML0里面都是空的但无法存储数据?
3、上面提示错误 “run placement fails for object "ramfuncs", size 0x209 (page 0). Available
ranges:
PRAML0 size: 0x638 unused: 0x103 max hole: 0x103” 意思是不是说"ramfuncs size 0x209 (page 0)“,但PRAML0剩余空间unused: 0x103,所以存储空间不够?
4、”PRAML0 : origin = 0x008000, length = 0x000638 /* on-chip RAM block L0 */“和”DRAML0 : origin = 0x008638, length = 0x0009c8 /* on-chip RAM block L0 */“也就是RAML0一共就这么大,提示空间不足,还怎么扩展?
5、FLASHA部分出现过类似的问题,也是反复修改、增加存储空间的,修改后还是会出现。
纠结两天了,不知道怎么解决,还请各位前辈能指导一下,非常感谢! |