[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4111933#p4111933"]
jcxz, для фантастов, решивших, что можно в линкер-скрипт инклюды сишные добавлять, вот выхлоп:[/uquote]Я вам привёл фрагмент
реального командного файла линкёра.
Добавлено after 4 minutes 49 seconds:
[uquote="tonyk",url="/forum/viewtopic.php?p=4111953#p4111953"]Легко! Указываешь секцию, в которой её нужно разместить. Если нужно, можно даже смещение относительно начала секции указать и/или выравнивание. И спокойно работаешь как с обычной переменной. Очень удобно, когда нужно сохранять переменные во флэш. Все адреса и размеры вычисляет при таком подходе линковщик.[/uquote]А теперь покажите как такое можно сделать например на любом XMC4xxx? Или на любом LPC17xx?
А то мануалы их говорят, что это невозможно.
Добавлено after 15 minutes 16 seconds:
[uquote="Dimon456",url="/forum/viewtopic.php?p=4111897#p4111897"]как это сделать в arm_gcc?[/uquote]Сначала нужно уточнить: Что имеется в виду под "остатком свободной RAM"?
Если речь про объём какого-то региона ОЗУ, не занятый компоновщиком для выходных секций программы (кода/данных), то:
1) Разместить любую переменную/константу в именованной секции (назовём её ".codetailExt").
2) В командном файле компоновщика задать размещение этой секции в конце того региона ОЗУ, незанятый размер которого хотите вычислить.
3) Вычислить незанятый объём как =
конец_региона - конец_секции_.codetailExt.
Пример для IAR (фрагмет командного файла компоновщика):
Код: Выделить всё
define region RAM_regionC = mem:[from 0x20000100 size 0x1FF00]; //DSRAM1 (ro-data)
define block IMAGE_HEAD with fixed order {section .intvec, section .checksum, section .codehead, section .intvecTail, section .codeSignature};
place in RAM_regionC {
first block IMAGE_HEAD_EXT,
section .rodata,
section .text object bsp.o,
section .text object http.o,
section .text object json.o,
section .text object japi.o,
section .text object dte.o,
last section .codetailExt
};
Незанятый размер региона
RAM_regionC будет =
0x20020000 - (u32)__section_end(".codetailExt") (это уже в си-коде).