Может у кого есть опыт, подскажите пожалуйста,
как собрать 2 загружаемых файла по разным адресам,
адреса указываю в скрипте линковщика в выходных секциях
Мне нужно создать 2 файла:
- один загружать в ROM по адресу 0x00000000 ; rom.elf / rom.bin
- другой загружать в RAM по адресу 0xC0000000 ; ram.elf / ram.bin
Я написал такой скрипт:
ENTRY(_start)
MEMORY {
ROM : ORIGIN = 0x00000000, LENGTH = 4K
RAM : ORIGIN = 0xC0000000, l = 128K
}
SECTIONS
{
.vectors 0x00000000 : AT( 0x00000000)
{
_svectors = . ;
*(.vectors)
_evectors = . ;
} >ROM
.text 0xC0000000: AT( 0xC0000000)
{
_stext = . ;
*(.start)
*(.text)
*(.rodata)
*(.rodata*)
*(.glue_7)
*(.glue_7t)
*(.data)
*(.bss)
_etext = . ;
} >RAM
. = ALIGN(4);
}
.end
При конпиляции создается один файл *.elf, если его дизассемблировать, то
вроде соответствует желаемому.
А как мне теперь этот файл, формата *.elf распилить на 2 файла ?
Я пробовал:
objcopy -j .vectors image.out ROM.elf // копирую секцию '.vectors' в ROM.elf
objcopy -R .vectors image.out RAM.elf // все кроме '.vectors' в RAM.elf
Распиливаются но при создании ROM.bin из ROM.elf, ROM.bin получается 0 длины,
и дизассемблер ROM.elf не содержит assembler кода
Может так вообще делать нельзя ?
Не подскажите как правильно делают такие вещи, что сделал не так, как правильно ?
Подскажите если не сложно.
Ответ на:
комментарий
от fghj
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Как линкер настраивает символы в таблице символов? (2022)
- Статьи Осваиваем STM32 снизу: часть 4 (2023)
- Форум Как починить линкер ld? (2001)
- Форум Вопрос по lds скриптам (скриптам линкера) (2010)
- Форум Подскажите простой open-source линкер, но не GNU ld (2012)
- Форум ld (2015)
- Форум ld (2008)
- Форум ld ? (2008)
- Форум Сообщения линкера (2005)
- Форум python: как передать флаги линкеру в distutils скрипте (2019)