Как да поставим програмен код в няколко области на паметта?

Има няколко области на паметта

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
В зависимост от това кой CPU е това, вероятно има търговски алтернативи с линкери, които поддържат раздел в няколко региона. Така че линкерът се опитва да постави нещо в регион 1, докато вече не може да се побере там, след което го поставя в регион 2. Това е донякъде често срещана характеристика според моя опит, използвал съм го от време на време на различни микроконтролери системи.   -  person Lundin    schedule 29.05.2020


Отговори (1)


Доколкото знам, няма начин да се разпредели раздел върху няколко несъседни области на паметта.

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

Като цяло това е много удобна документация за различните възможности.

person Sinic    schedule 29.05.2020