Hello,
I'm developing a simple audio processing application using C6748, CCS5.
My application uses a large array of floats, some 400,000 floats with values which are already known at compile time.
I have a few question on how to implement this.
- What would be the best way to input this array to memory? Should it be hard coded in the application's code? Or maybe save the values in a binary file and then parse it at the beginning of the application? Any other options?
- When I try to hard code the values in the application's code, I get the following errors when compiling:
"./configPkg/linker.cmd", line 212: error #10099-D: program will not fit into
available memory. placement with alignment fails for section ".const" size
0x28b1 . Available memory ranges:
IRAM size: 0x40000 unused: 0x2 max hole: 0x1
"./configPkg/linker.cmd", line 210: error #10099-D: program will not fit into
available memory. placement with alignment fails for section ".cinit" size
0xcbaf . Available memory ranges:
IRAM size: 0x40000 unused: 0x2 max hole: 0x1
"./configPkg/linker.cmd", line 208: error #10099-D: program will not fit into
available memory. run placement with alignment fails for section ".stack"
size 0x2000 . Available memory ranges:
IRAM size: 0x40000 unused: 0x2 max hole: 0x1
"./configPkg/linker.cmd", line 219: error #10099-D: program will not fit into
available memory. placement with alignment fails for section ".vecs" size
0x200 . Available memory ranges:
IRAM size: 0x40000 unused: 0x2 max hole: 0x1
"./configPkg/linker.cmd", line 218: error #10099-D: program will not fit into
available memory. run placement with alignment fails for section ".cio"
size 0x123 . Available memory ranges:
IRAM size: 0x40000 unused: 0x2 max hole: 0x1
"./configPkg/linker.cmd", line 209: error #10099-D: program will not fit into
available memory. run placement with alignment fails for section ".bss"
size 0x90 . Available memory ranges:
IRAM size: 0x40000 unused: 0x2 max hole: 0x1
"./configPkg/linker.cmd", line 214: error #10099-D: program will not fit into
available memory. placement with alignment fails for section ".switch" size
0x85 . Available memory ranges:
IRAM size: 0x40000 unused: 0x2 max hole: 0x1
=====================================================================
Obviously the array is to big to fit into memory. This raises some question:
2.a. How do I know which memory section is the problematic one and should be moved to the DDR?
2.b. How do I create a new memory section specifically for this array and place it in the DDR? Can you direct to the relevant documentation? Can you supply code examples?
2.c. More generally, there are many different memory sections (.text, .stack, .bss, .cinit, .pinit, .const, .data, .switch, .sysmem, .far, .args, .cio, .vecs, xdc.meta). How do I know what each one mean and where it should be stored? where is this documented?
Thanks in advance, and sorry for asking so many questions - I read the documentation but still feel I don't really understand the subject.
Matan