mspgcc group: I am trying to allocate memory in the flash area to use as permanent storage. I would like to align it on a 512-byte boundary, but msp430-gcc does not let me. Why?
I can define the global variable in the memory, but if I try to align it I run into problems. If I align on a 2-byte boundary it works. Anything beyond that, msp430-gcc warns and uses a 2-byte boundary. For example, using 4-byte boundary will not work: const char __attribute__ ((section(".text"), aligned(4))) storage[100] = {[0 ... 99] = 0xFF}; Warning: alignment of 'storage' is greater than maximum object file alignment. Using 2. Am I missing something? Or is this the wrong method? -Paul ================================================== Here is simple code setup (no clock setup): #include <io.h> // Want to align to on 512 - but will not work const char __attribute__ ((section(".text"), aligned(2))) storage[100] = {[0 ... 99] = 0xFF}; // Copied from TI example void write_to_flash_int16(int *location, int value) { FCTL3 = 0x0A500; FCTL1 = 0x0A540; *location = value; FCTL1 = 0x0A500; FCTL3 = 0x0A510; } int main() { int *f = (int *) storage; write_to_flash_int16 (f, 0xcafe); write_to_flash_int16 (f+1, 0xbabe); }