Я искал далеко и широко, как это сделать, и не смог ответить.
Мой макет памяти выглядит следующим образом:
Fake Address | Section
0 | text
7 | relocate
15 | bss
23 | stack
В конце стека я помещаю кучу. Который растет, а стек - полный нисходящий стек для используемого чипа ARM.
Теперь то, что я хочу сделать, это разместить один раздел, называть его .persist
, в мою память RAM. Я хочу, чтобы он находился в самом конце ОЗУ, и я хочу запрограммировать это в моем компоновщике script. Однако этот размер .persist
не определяется мной, а вычисляется компилятором из содержащихся в нем символов.
До сих пор у меня не было хорошего способа сделать это. Поскольку я знаю начальный адрес RAM и SIZE, было бы тривиально рассчитать, где раздел должен идти, если бы я знал размер раздела. Однако, согласно документации по компоновщику GNU (стр. 74), кажется, что:
SIZEOF (раздел) Возвращает размер в байтах имени если этот раздел был выделен. Если раздел не был выделен при оценке, компоновщик будет сообщите об ошибке.
поэтому я не могу определить размер раздела в компоновщике script (так как я хочу рассчитать размер до того, как поместить его/выделить).
Кто-нибудь знает хороший способ сделать это?