Hi,
I'm using the MSP430FR6989 with 128kB of FRAM. For this project I'm planning on using the majority of the FRAM (~120kB) as data storage. I had just planned on using the #pragma PERSISTENT call to assign some large arrays to FRAM.
The problem that I am running into is that using the #pragma PERSISTENT only utilizes the first section of FRAM called "FRAM" in the linker file, which has a length of 0xBB80. There is a second section of FRAM in the linker file called FRAM2 that has a length of 0x14000 that I can't figure out how to utilize correctly.
Here is a snippet of the original linker file:
SECTIONS
{
GROUP(READ_WRITE_MEMORY)
{
.TI.persistent : {} /* For #pragma persistent */
.cio : {} /* C I/O Buffer */
.sysmem : {} /* Dynamic memory allocation area */
} PALIGN(0x0400), RUN_END(fram_rx_start) > 0x4400
.cinit : {} > FRAM /* Initialization tables */
I tried modifying it so that it would hopefully use both FRAM and FRAM2
SECTIONS
{
GROUP(READ_WRITE_MEMORY)
{
// .TI.persistent : {} /* For #pragma persistent */
.cio : {} /* C I/O Buffer */
.sysmem : {} /* Dynamic memory allocation area */
} PALIGN(0x0400), RUN_END(fram_rx_start) > 0x4400
.TI.persistent : {} > FRAM | FRAM2
.cinit : {} > FRAM /* Initialization tables */
But even after modifying the linker, I can't get any data allocated to FRAM2. This is the error I keep getting:
"program will not fit into available memory. placement with alignment fails for section ".TI.persistent" size 0x176c0 . Available memory ranges: "
Any ideas on how to get this to work? Surely someone has used both of these FRAM sections for data storage!
