Я искал далеко и широко, как это сделать, и не смог найти ответ.Сценарий компоновщика - размещение раздела в конце области памяти
Моя раскладка памяти выглядит следующим образом:
Fake Address | Section
0 | text
7 | relocate
15 | bss
23 | stack
В конце стека я поместить Heap. Который растет, и стек - полный нисходящий стек для чипа ARM, который я использую.
Теперь, что я хочу сделать, это разместить один раздел, назовем его .persist
, в мою память RAM. Я хочу, чтобы он находился в самом конце ОЗУ, и я хочу запрограммировать это в моем скрипте компоновщика. Однако размер этого раздела .persist
не определяется мной, а вычисляется компилятором из содержащихся в нем символов.
До сих пор у меня не было хорошего способа сделать это. Поскольку я знаю начальный адрес RAM и SIZE, было бы тривиально рассчитать, где раздел должен идти, если бы я знал размер раздела. Однако, по словам the GNU linker documentation (pg 74), кажется, что:
SIZEOF (раздел) Возвращает размер в байтах имени секции, если этот раздел был выделен. Если раздел не был выделен, когда он был оценен, компоновщик будет сообщить об ошибке.
поэтому я не могу определить размер раздела в скрипте компоновщика (так как я хочу рассчитать размер, прежде чем я его разместил/выделил).
Кто-нибудь знает, как это сделать?
У меня есть та же самая проблема. Это вам помогает? http://stackoverflow.com/a/19348569/911550 – parvus
Это частичное решение, но не то, что мне нужно. Это все еще самый близкий кто-то еще помог. Благодаря! – nonsensickle