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 */