Я пытаюсь поместить некоторые переменные в указанную c связку ПЗУ.
В файле конфигурации компоновщика:
define symbol __ICFEDIT_region_APP_ROM_start__ = 0x08070000 ;
define symbol __ICFEDIT_region_APP_ROM_end__ = 0x0807FFFF;
define region APP_ROM_region = mem:[from __ICFEDIT_region_APP_ROM_start__ to __ICFEDIT_region_APP_ROM_end__];
place in APP_ROM_region { readonly section test_data};
В исходном файле:
#pragma default_variable_attributes = @ "test_data"
const U8 testVar8 = 0;
const U8 testArray512[512];
const uint32_t testVar32 = 0x1234ABCD;
const U8 testArray500[500];
#pragma default_variable_attributes =
Сгенерированный файл .map:
test_data const 0x08070000 0x200 source_file.o [1]
test_data const 0x08070200 0x1f4 source_file.o [1]
test_data const 0x080703f4 0x4 source_file.o [1]
test_data const 0x080703f8 0x1 source_file.o [1]
testArray512 0x08070000 0x200 Data Gb source_file.o [1]
testArray500 0x08070200 0x1f4 Data Gb source_file.o [1]
testVar32 0x080703f4 0x4 Data Gb source_file.o [1]
testVar8 0x080703f8 0x1 Data Gb source_file.o [1]
Все это работает - переменные находятся в правильном разделе.
Но компоновщик привел его в порядок из-за размера переменных.
Есть ли способ указать компоновщику не изменять порядок переменных, чтобы они отображались в файле карты в том же порядок, как они объявлены в исходном файле?
Цель:
testArray8 0x08070000 0x1 Data Gb source_file.o [1]
testArray512 0x08070001 0x200 Data Gb source_file.o [1]
testVar32 0x08070201 0x4 Data Gb source_file.o [1]
testVar500 0x08070205 0x1f4 Data Gb source_file.o [1]