Это может быть простой вопрос, но я новичок с файлом компоновщика GNU GCC (codeourcery arm-none-eabi ver 4.5.2).
Мне нужно инициализировать Mmu в процессоре ARM7и в таблице говорится, что таблица страниц Mmu должна быть расположена на границе 16 Кбайт (2 ^ 14).
Пока я пришел с этим решением, но я почти уверен, что это не такболее эффективный!
ENTRY(_start)
SECTIONS
{
. = 0x0;
.text : {_stext = .;
*startall.o (.text)
. = 0x4000;
*MmuSdram0.o (.text)
*(.text)
_etext = .;}
.data : {_sdata = .;
*(.data)
_edata = .;}
.bss : {_sbss = .;
*(.bss)
_ebss = .;}
}
startall.o - это файл сборки, содержащий инициализацию процессора.
В следующей строке я установил адрес 0x4000 (граница 2 ^ 14).
MmuSdram0.o содержит таблицу страниц Mmu.
Затем следуйте остальной части прошивки.
Очевидно, что это решение дает мне промежуток между концом startall и 0x4000, что приводит к пустой трате памяти (мне не нравитсярастрата ;-)
Вместо этого я бы поставила таблицу страниц после * (. text), но я не знаю, как сделать что-то вроде:
* (. text) «кроме» MmuSdram0.o
И я предпочитаю, чтобы компоновщик рзамените таблицу страниц на следующей доступной границе 2 ^ 14 вместо того, чтобы фиксировать адрес самостоятельно.Я проверил документацию по компоновщику, нашел команду ALIGN, но я не уверен, как правильно ее использовать или даже если это команда, которая мне подходит ...
Заранее спасибо!