I am using L3DPSARAM (size 0x1000) for my CLA Program RAM.
I am using the CLA math library as well ... but this makes my CLA program too big to fit in L3DPSARAM.
Once I compile everything, the size is too big and I get:
"../My.cmd", line 97: error #10099-D: program will not fit into available memory. run placement with alignment/blocking fails for section "Cla1Prog" size 0x1192 page 0. Available memory ranges:
L3DPSARAM size: 0x1000 unused: 0x1000 max hole: 0x1000
error #10010: errors encountered during linking; "My.out" not built
So I realized I don't need all the source in CLA math library, so I excluded all the functions I'm not using, and only kept CLAsin and CLAcos .asm source files.
This allows me to compile Cla1Prog to a smaller size that can fit.
However, what if I want to use all the functions in the CLA math library? How can I make the program fit or can I relocate it to another memory area?
For reference ... when I do InitCla() from main(), I do the following
memcpy(&Cla1funcsRunStart, &Cla1funcsLoadStart, (Uint32)&Cla1funcsLoadSize);
memcpy(&Cla1mathTablesRunStart, &Cla1mathTablesLoadStart, (Uint32)&Cla1mathTablesLoadSize);
Also, here is My.cmd file for reference:
/* User Configurable Options */
#define USE_CLA_C 1 /* 1 = Using CLA C-compiler, 0 = ASM only */
_Cla1Prog_Start = _Cla1funcsRunStart;
-heap 0x400
-stack 0x400
/* Define size for the CLA scratchpad area that will be used by the CLA compiler for local symbols and temporary
* variables; also force references to the special symbols that mark the scratchpad area. */
#if USE_CLA_C == 1
CLA_SCRATCHPAD_SIZE = 0x100;
--undef_sym=__cla_scratchpad_end
--undef_sym=__cla_scratchpad_start
#endif
MEMORY
{
PAGE 0: /* Program Memory */
BEGIN_M0 : origin = 0x000000, length = 0x000002 /* Part of M0SARAM - used for "Boot to M0" mode */
L3DPSARAM : origin = 0x009000, length = 0x001000 /* L3 DPSARAM, CSM secure, CLA Prog RAM */
L4SARAM : origin = 0x00A000, length = 0x002000 /* L4 SARAM, CSM secure */
OTP (R) : origin = 0x3D7800, length = 0x000400 /* OTP */
FLASH_ABCDEFGH (R) : origin = 0x3D8000, length = 0x01FF80 /* FLASH, All sectors combined */
CSM_RSVD (R) : origin = 0x3F7F80, length = 0x000076 /* Part of FLASH_A - reserved when CSM is in use */
BEGIN_FLASH (R) : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASH_A - used for "Jump to flash" mode */
PASSWORDS (R) : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASH_A - CSM password locations */
FPUTABLES (R) : origin = 0x3FD860, length = 0x0006A0 /* Part of Boot ROM */
IQTABLES (R) : origin = 0x3FDF00, length = 0x000B50 /* Part of Boot ROM */
IQTABLES2 (R) : origin = 0x3FEA50, length = 0x00008C /* Part of Boot ROM */
IQTABLES3 (R) : origin = 0x3FEADC, length = 0x0000AA /* Part of Boot ROM */
RESET (R) : origin = 0x3FFFC0, length = 0x000002 /* part of Boot ROM */
PAGE 1 : /* Data Memory */
M0SARAM : origin = 0x000002, length = 0x0003FE /* M0 SARAM */
M1SARAM : origin = 0x000400, length = 0x000400 /* M1 SARAM */
CLAMSGRAM1 : origin = 0x001480, length = 0x000080 /* Part of PF0 - CLA to CPU Message RAM */
CLAMSGRAM2 : origin = 0x001500, length = 0x000080 /* Part of PF0 - CPU to CLA Message RAM */
L0DPSARAM : origin = 0x008000, length = 0x000800 /* L0 DPSARAM, CSM secure, CLA Data RAM 2 */
L1DPSARAM : origin = 0x008800, length = 0x000400 /* L1 DPSARAM, CSM secure, CLA Data RAM 0 */
L2DPSARAM : origin = 0x008C00, length = 0x000400 /* L2 DPSARAM, CSM secure, CLA Data RAM 1 */
L5DPSARAM : origin = 0x00C000, length = 0x002000 /* L5 DPSARAM, DMA RAM 0 */
L6DPSARAM : origin = 0x00E000, length = 0x002000 /* L6 DPSARAM, DMA RAM 1 */
L7DPSARAM : origin = 0x010000, length = 0x002000 /* L7 DPSARAM, DMA RAM 2 */
L8DPSARAM : origin = 0x012000, length = 0x002000 /* L8 DPSARAM, DMA RAM 3 */
}
SECTIONS
{
/* Compiler Required Sections */
/* Program memory (PAGE 0) sections */
.text : > FLASH_ABCDEFGH, PAGE = 0
.cinit : > FLASH_ABCDEFGH, PAGE = 0
.const : > FLASH_ABCDEFGH, PAGE = 0
.econst : > FLASH_ABCDEFGH, PAGE = 0
.pinit : > FLASH_ABCDEFGH, PAGE = 0
.reset : > RESET, PAGE = 0, TYPE = DSECT /* We are not using the .reset section */
.switch : > FLASH_ABCDEFGH, PAGE = 0
/* Data Memory (PAGE 1) sections */
.bss : > M0SARAM, PAGE = 1
.ebss : > M0SARAM, PAGE = 1
.cio : > M0SARAM, PAGE = 1
.stack : > M1SARAM, PAGE = 1
.sysmem : > M1SARAM, PAGE = 1
.esysmem : > M1SARAM, PAGE = 1
.bss_cla : > L1DPSARAM, PAGE = 1
.const_cla : > L2DPSARAM, PAGE = 1
/* User Defined Sections */
codestart : > BEGIN_FLASH, PAGE = 0 /* Used by file CodeStartBranch.asm */
dmaMemBufs : > L5DPSARAM, PAGE = 1 /* Link to DMA accessible memory */
csm_rsvd : > CSM_RSVD, PAGE = 0 /* Used by file Passwords.asm */
passwords : > PASSWORDS, PAGE = 0 /* Used by file Passwords.asm */
ClaToCpuMsgRAM : > CLAMSGRAM1, PAGE = 1 /* Link to PF0 - CLA Message RAM */
CpuToClaMsgRAM : > CLAMSGRAM2, PAGE = 1 /* Link to PF0 - CLA Message RAM */
/* Section secureRamFuncs used by file Flash.c. */
secureRamFuncs : LOAD = FLASH_ABCDEFGH, PAGE = 0 /* Load to flash, run from CSM secure RAM */
RUN = L4SARAM, PAGE = 0
LOAD_START(_secureRamFuncs_loadstart),
LOAD_SIZE(_secureRamFuncs_loadsize),
RUN_START(_secureRamFuncs_runstart)
/* Section Cla1Prog used by file Cla.c */
Cla1Prog : LOAD = FLASH_ABCDEFGH, PAGE = 0 /* Load to flash, run from CLA Prog RAM */
RUN = L3DPSARAM, PAGE = 0
LOAD_START(_Cla1funcsLoadStart),
LOAD_END(_Cla1funcsLoadEnd),
LOAD_SIZE(_Cla1funcsLoadSize),
RUN_START(_Cla1funcsRunStart)
CLA1mathTables : LOAD = FLASH_ABCDEFGH, PAGE = 0 /* Load to flash, run from CLA Prog RAM */
RUN = L0DPSARAM, PAGE = 1
LOAD_START(_Cla1mathTablesLoadStart),
LOAD_END(_Cla1mathTablesLoadEnd),
LOAD_SIZE(_Cla1mathTablesLoadSize),
RUN_START(_Cla1mathTablesRunStart)
#if USE_CLA_C == 1
CLAscratch : { *.obj(CLAscratch) /* Scratchpad memory for the CLA C Compiler */
. += CLA_SCRATCHPAD_SIZE;
*.obj(CLAscratch_end)
} > L2DPSARAM, PAGE = 1
#endif
/* Math Tables */
FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
IQmath : > FLASH_ABCDEFGH, PAGE = 0
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
/* IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
{
IQmath_fpu32.lib<IQNexpTable.obj> (IQmathTablesRam)
}
IQmathTables3 :> IQTABLES3, PAGE = 0, type = NOLOAD
{
IQmath_fpu32.lib<IQNasinTable.obj> (IQmathTablesRam)
}*/s
}
/* End of file */