我在调试controlsuite的一个项目时出现以下问题:
当我申请一个全局变量时就出现
error: placement fails for object
"IQmath", size 0x11a (page 0). Available ranges:
progRAM size: 0x1900 unused: 0x68 max hole: 0x68
error: errors encountered during linking;
好像是程序放不下,可我根本没有增加程序,这是什么原因?怎么解决?
我不申请变量但增加程序时反倒没有这个错误。
huang shuang:
回复 Jones Chen:
MEMORY
{
PAGE 0 :
/* Note that the memory allocation below does not create sections as necessary for
the CLA on the F2803x.
*/
BEGIN: origin = 0x000000, length = 0x000002
BOOT_RSVD: origin = 0x000002, length = 0x00004E
RAMM0: origin = 0x000050, length = 0x0003B0
progRAM: origin = 0x008000, length = 0x001900/*x001800*/
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 */
RESET: origin = 0x3FFFC0, length = 0x000002
BOOTROM: origin = 0x3FF27C, length = 0x000D44
PAGE 1 :
RAMM1: origin = 0x000480, length = 0x000380
dataRAM: origin = 0x009900, length = 0x000800 /*x000800*/
CLA_CPU_MSGRAM : origin = 0x001480, length = 0x000080
CPU_CLA_MSGRAM : origin = 0x001500, length = 0x000080
}
SECTIONS
{
codestart: > BEGIN,PAGE = 0
ramfuncs: > RAMM0,PAGE = 0
.text: > progRAM,PAGE = 0
.cinit: > RAMM0,PAGE = 0
.pinit: > RAMM0,PAGE = 0
.switch: > RAMM0,PAGE = 0
.reset: > RESET,PAGE = 0, TYPE = DSECT
.stack: > RAMM1,PAGE = 1
.ebss: > dataRAM,PAGE = 1
.econst: > dataRAM,PAGE = 1
.esysmem: > RAMM1,PAGE = 1
IQmath: > progRAM,PAGE = 0
IQmathTables: > IQTABLES,PAGE = 0, TYPE = NOLOAD
Cla1ToCpuMsgRAM: > CLA_CPU_MSGRAM, PAGE = 1
CpuToCla1MsgRAM: > CPU_CLA_MSGRAM, PAGE = 1
/* Uncomment the section below if calling the IQNexp() or IQexp()
functions from the IQMath.lib library in order to utilize the
relevant IQ Math table in Boot ROM (This saves space and Boot ROM
is 1 wait-state). If this section is not uncommented, IQmathTables2
will be loaded into other memory (SARAM, Flash, etc.) and will take
up space, but 0 wait-state is possible.
*/
/*
IQmathTables2: > IQTABLES2, PAGE = 0, TYPE = NOLOAD
{
IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)
}
*/
/* Uncomment the section below if calling the IQNasin() or IQasin()
functions from the IQMath.lib library in order to utilize the
relevant IQ Math table in Boot ROM (This saves space and Boot ROM
is 1 wait-state). If this section is not uncommented, IQmathTables2
will be loaded into other memory (SARAM, Flash, etc.) and will take
up space, but 0 wait-state is possible.
*/
/*
IQmathTables3: > IQTABLES3, PAGE = 0, TYPE = NOLOAD
{
IQmath.lib<IQNasinTable.obj> (IQmathTablesRam)
}
*/
}
SECTIONS
{
DLOG: > dataRAM,PAGE=1
}
我在调试controlsuite的一个项目时出现以下问题:
当我申请一个全局变量时就出现
error: placement fails for object
"IQmath", size 0x11a (page 0). Available ranges:
progRAM size: 0x1900 unused: 0x68 max hole: 0x68
error: errors encountered during linking;
好像是程序放不下,可我根本没有增加程序,这是什么原因?怎么解决?
我不申请变量但增加程序时反倒没有这个错误。
Jones Chen:
回复 huang shuang:
IQmath : > progRAM, PAGE = 0
progRAM : origin = 0x008000, length = 0x001900/*x001800*/
dataRAM : origin = 0x009900, length = 0x000800 /*x000800*/
请问:
0x9900+0x800=? 是否已经超过了0xA000? 已经越界了!
另外,可以将IQmath放到别的区域去。
我在调试controlsuite的一个项目时出现以下问题:
当我申请一个全局变量时就出现
error: placement fails for object
"IQmath", size 0x11a (page 0). Available ranges:
progRAM size: 0x1900 unused: 0x68 max hole: 0x68
error: errors encountered during linking;
好像是程序放不下,可我根本没有增加程序,这是什么原因?怎么解决?
我不申请变量但增加程序时反倒没有这个错误。
shi xiaming:
回复 Jones Chen:
谢谢!