调试一个FBTC程序,当设置#define DBPRINT 1时,即将输出调试信息,则编译链接时出错:
错误如下:
>> error: can't allocate .sysmem, size 00002000 (page 0) in PMEM (avail:
00001f60)
>> error: errors in input - FBTC6416.out not built
>> Compilation failure
错误显示无法分配.sysmem,它一共有00002000这么大,但PMEM空间可用的(avail,这个简称很恶心,全称应该是available)只有00001f60这么多,不够用。
看一下CMD文件:
-c
-heap 0x2000
-stack 0x4000
/* Memory Map
*/
MEMORY
{
PMEM: o = 00000000h l = 00010000h
BMEM: o = 80000000h l = 00010000h
}
SECTIONS
{
.text > PMEM
.far > PMEM
.stack > PMEM
.bss > PMEM
.cinit > PMEM
.pinit > PMEM
.cio > PMEM
.const > PMEM
.data > PMEM
.switch > PMEM
.sysmem > PMEM
}
PMEM只分配了64k(00010000,即2^16,即2^6k),对于C6416来说,它内部自带有有1M的SRAM,将这里如下设置:
MEMORY
{
PMEM: o = 00000000h l = 00100000h
BMEM: o = 80000000h l = 00010000h
}
再进行编译链接,OK,就没错误了。