У меня есть много примеров на основе рук:
https://github.com/dwelch67
Найдите или создайте свой собственный скрипт компоновщика.где он мог бы сказать ORIGIN = 0x00000000 для рома, изменив это на 0x2000, что-то вроде этого, например:
MEMORY
{
rom : ORIGIN = 0x00002000, LENGTH = 0x6000
ram : ORIGIN = 0x40000000, LENGTH = 0x2000
}
SECTIONS
{
.text : { *(.text*) } > rom
.bss : { *(.bss*) } > ram
}
вам может потребоваться / нужна .data с
.data : { *(.data*) } > ram AT >rom
иличто-то вроде того.зависит от ваших программ и загрузочного кода и всего этого.
Если у вас уже есть работающая система, которая собирает для 0x00000000, то найдите используемый скрипт линкера и сделайте его копию, измените его на 0x2000 и укажите этот скрипт компоновщика.