Подождите, что значит, не работает
} > RAM AT > FLASH ???
Может, у вас всё же что-то не так в скриптах?
К слову, навороченный у вас скрипт! Его ещё покурить надо, да на заметку себе взять, пригодится!

Ставлю секцию ramfunc вперёд, выхлоп в map-файле:
Цитата
4 .ramfunc 00000538 20000000 08019a68 00020000 2**3
CONTENTS, ALLOC, LOAD, READONLY, CODE
5 .data 00000890 20000538 08019fa0 00020538 2**3
CONTENTS, ALLOC, LOAD, DATA
6 .bss 00005d54 20000dc8 0801a830 00020dc8 2**3
ALLOC
Ставлю в центр, выхлоп:
Цитата
4 .data 00000890 20000000 08019a68 00020000 2**3
CONTENTS, ALLOC, LOAD, DATA
5 .ramfunc 00000538 20000890 0801a2f8 00020890 2**3
CONTENTS, ALLOC, LOAD, READONLY, CODE
6 .bss 00005d54 20000dc8 0801a830 00020dc8 2**3
ALLOC
Хочу, ставлю даже после bss, выхлоп:
Цитата
4 .data 00000890 20000000 08019a68 00020000 2**3
CONTENTS, ALLOC, LOAD, DATA
5 .bss 00005d54 20000890 0801a2f8 00020890 2**3
ALLOC
6 .ramfunc 00000538 200065e8 0801a2f8 000265e8 2**3
CONTENTS, ALLOC, LOAD, READONLY, CODE
Далее, по поводу объектников - указываете прямо их имена в линкер-скрипте:
Цитата
.my_objects:
{
. = WDT_NEED_ADDR
path1/wdt.o
. = EEPROM_NEED_ADDR
path2/eeprom.o
} > FLASH
Что вам мешает перемещать эти объектники целиком, используя те же указатели . = WDT_NEED_ADDR?
Более того, для отладки можете смотреть из c-кода своего (ну или просто в map-файле) глобальные переменные вида:
Цитата
void * _binary_path1_wdt_c_start, _binary_path1_wdt_c_end;
void * _binary_path2_eeprom_c_start, _binary_path2_eeprom_c_end;