Цитата(ViKo @ Aug 18 2017, 09:21)

А как код функции попадет в ОЗУ? Что и когда скопирует этот код из флэш-памяти? Я с таким делом не сталкивался, интересуюсь. Может, компилятор сам сделает? После сброса.
Компилятор и линкер все сделают с необходимыми адресами.
Перед вызовом main делается инициализация переменных (data и bss).
В этот момент подготовленный для ОЗУ код скопируется из flash по нужным адресам ОЗУ.
Для этого в скрипте линкера дополняем секцию data
Код
.data : AT ( _sidata )
{
. = ALIGN(4);
_sdata = .;
*(.data)
*(.data.*)
*(.ramfunc)
. = ALIGN(4);
_edata = .;
} >RAM
А ОЗУ-шные функции описываем так (для gcc)
Код
void ram_table_save(void) __attribute__(( section(".ramfunc") ));