Пример. В оригинальный скрипт компоновщика
Код
KEEP(*(.isr_vector))
*(.text*)
KEEP(*(.init))
KEEP(*(.fini))
Добавляете свою секцию
Код
KEEP(*(.isr_vector))
. = ALIGN (512);
*(.flash_var*)
. = ALIGN (512);
*(.flash_var_end*)
*(.text*)
KEEP(*(.init))
KEEP(*(.fini))
в ALIGN пишите размер страницы, так у вас начало и конец будут выровнены по страницам. Для контроля смотреть *.sym файл
Цитата
00000000 a Heap_Size
00000400 a Stack_Size
08000000 T __isr_vector
08000200 t Service::Config::mConfigDataFlashArray <--------------------------------------------
08000600 t __do_global_dtors_aux
08000624 t frame_dummy
0800065c T _mainCRTStartup
Саму переменную объявляем с атрибутом, указывающим на используюмую для переменной секцию
Код
uint8_t __attribute__ ((section(".flash_var"))) mConfigDataFlashArray[sizeof(SConfigData_Internal)];