I just ran out of memory. After some digging I learned that the compiler likes to put all variable variables into SRAM unless otherwise instructed. Fair enough, off I go, find SLAA628 which also points to SLAU132L . There's are also some threads about people having trouble with FRAM.
Now after some fiddling I found out it seems #pragma PERSISTENT(foo) actually does nothing. In other words, this does not work:
#pragma PERSISTENT(ADC_buffer) ADC_buf ADC_buffer;
In the header file I've declared
typedef struct ADC_buffer_{ USHORT volatile sensor[SENSORS]; char result[256]; char sensor_value[SENSORS][SENSOR_STRING]; }ADC_buf; extern ADC_buf ADC_buffer;
If I change the PERSISTENT to use explicity .TI.persistent data section, it'll work just fine:
#pragma DATA_SECTION(ADC_buffer, ".TI.persistent") ADC_buf ADC_buffer;
I thought the PERSISTENT does that as well? Is it broken or I'm doing something wrong?
I'm using MSP430FR5969 and CCS Version: 6.2.0.00050 with 2.0.0.15 FRAM modules.