дело в том, что передо мной стоит задача обновления устройства на базе ARM freescale.
Но канал для обновления медленный. Поэтому принято решение обновлять частично.
Я хочу создать программный модуль.
вот map файл
Код
.mod1 0x0000cc60 0x7c
0x0000cc60 . = ALIGN (0x4)
*(.name1.all)
.name1.all 0x0000cc60 0x14 ./Sources/mod1.o
0x0000cc60 fn_all
*(.name1.*)
.name1.var 0x0000cc74 0x1 ./Sources/mod1.o
*fill* 0x0000cc75 0x3
.name1.init 0x0000cc78 0x1c ./Sources/mod1.o
0x0000cc78 fn_init
.name1.ld 0x0000cc94 0x24 ./Sources/mod1.o
0x0000cc94 fn_ld
.name1.md 0x0000ccb8 0x24 ./Sources/mod1.o
0x0000ccb8 fn_md
*(.name1)
0x0000ccdc . = ALIGN (0x4)
где функция fn_all () имеет фиксированный адрес и она вызывается из основной программы.
а все остальные функции могут меняться .
Код
uint8_t fn_all () {
fn_ld ();
fn_md ();
return 0;
}
такой модуль будет меньше чем вся программа.
и замену производить только этого модуля.
вот примерно так..