For instance, if I have
Code: Select all
static char pendingBuffer[OUTPUT_BUFFER] __attribute__((section(".ccm")));
my binary links successfully and I see that 'pendingBuffer' is not present in the .map file as the other fields are and that makes me thing that 'pendingBuffer' was moved somewhere else, hopefully into CCM.
Now, if I change this line to
Code: Select all
static char pendingBuffer[10000 + OUTPUT_BUFFER] __attribute__((section(".ccm")));
Suddenly the binary does not link anymore, the error message is
c:/program files (x86)/codesourcery/sourcery_codebench_lite_for_arm_eabi/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../../arm-none-eabi/bin/ld.exe: rusefi.elf section `.bss' will not fit in region `ram'
c:/program files (x86)/codesourcery/sourcery_codebench_lite_for_arm_eabi/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../../arm-none-eabi/bin/ld.exe: region `ram' overflowed by 6408 bytes
Why ram and not ccm ram? Probably because bss goes to ram, but what do I have to detach myself from .bss?
My linker script is https://svn.code.sf.net/p/rusefi/code/t ... 7xG_CCM.ld - it's the default script with stack pointed into ram.