Как разместить программный код в нескольких областях памяти?

Есть несколько областей памяти.

MEMORY
{
  rom1 (rx)   : ORIGIN = 0x00000000,    LENGTH = 256k
  rom2 (rwx)  : ORIGIN = 0x10000000,    LENGTH = 16M
  ram1 (rw!x) : ORIGIN = 0x20000000,    LENGTH = 64k
  ram2 (rwx)  : ORIGIN = 0x21000000,    LENGTH = 16M
}

Как разместить .text секции всех входных файлов в области памяти rom1, а если места не хватает, то остальные символы разместить в rom2? В описании секции вывода может быть указана только одна область памяти.

  .text :
  {
    *(.text)
  } > rom1

person Матвей Иссаков    schedule 29.05.2020    source источник
comment
В зависимости от того, какой это ЦП, вероятные коммерческие альтернативы с компоновщиками, которые поддерживают наличие раздела в нескольких регионах. Таким образом, компоновщик пытается поместить что-то в регион 1, пока он не сможет туда больше поместиться, а затем помещает это в регион 2. Это довольно распространенная функция в моем опыте, я использовал ее время от времени на различных микроконтроллерах. системы.   -  person Lundin    schedule 29.05.2020


Ответы (1)


Насколько я знаю, нет возможности распределить раздел по нескольким несмежным областям памяти.

Как предлагается здесь, раздел следует разделить на несколько разделов, а затем назначить области памяти.

В целом это очень удобная документация о различных возможностях.

person Sinic    schedule 29.05.2020