Дело в том, что понадобилось сохранять настройки программы в flash, но для зашиты их решил сделать несколько дубликатов.
Делаю это примерно так:
Код
S_GlobalSettingAllVar DefaultGlobalSettingAllVar={ //Начальные настройки(устанавливаются после нажатия кнопки Reset)
.NetSetting={
.mac = {0x00, 0x08, 0xdc, 0xab, 0xc1, 0x11}, //6
.ip = {192, 168, 1, 4}, //4
.sn = {255, 255, 0, 0},
.gw = {192, 168, 0, 0},
},
.Password={"fghfgh"},
}
S_GlobalSettingAllVar GlobalSettingAllVar={ //рабочая структура
.NetSetting={
.mac = {0x00, 0x08, 0xdc, 0xab, 0xc1, 0x11}, //6
.ip = {192, 168, 1, 4}, //4
.sn = {255, 255, 0, 0},
.gw = {192, 168, 0, 0},
},
.Password={"fghfgh"},
}
.NetSetting={
.mac = {0x00, 0x08, 0xdc, 0xab, 0xc1, 0x11}, //6
.ip = {192, 168, 1, 4}, //4
.sn = {255, 255, 0, 0},
.gw = {192, 168, 0, 0},
},
.Password={"fghfgh"},
}
S_GlobalSettingAllVar GlobalSettingAllVar={ //рабочая структура
.NetSetting={
.mac = {0x00, 0x08, 0xdc, 0xab, 0xc1, 0x11}, //6
.ip = {192, 168, 1, 4}, //4
.sn = {255, 255, 0, 0},
.gw = {192, 168, 0, 0},
},
.Password={"fghfgh"},
}
В принципе можно так же сделать и дублирующие структуры, но в этом варианте мне не нравится то что при необходимости поменять значения, то придется менять во всех дублирующих структурах и можно в какой-то ошибиться.
Хотелось бы сделать инициализацию в одной из структур, которая при прошивки разместилась по нескольким адресам.
Как заставить компилятор разместить структуры во flash даже если по коду они не используются?(по коду использую адрес)
Ps. компилятор IAR stm32, но думаю это не сильно принципиально.