Я использую S5PV210, чип Sum8 cortexA8. В своем документе программа начнет выполнение с 0xd0200010. Теперь мне удалось запустить мою программу. Но у меня все еще есть некоторые вопросы.Как обеспечить функцию входа по фиксированному адресу руки с открытым металлом?
Сначала я использовал ссылку «-Ttext 0xd02000010 -e main» и подумал, что она поместит главную функцию в адрес 0xd0200010. Но я обнаружил, что он просто поместил раздел .text на 0xd0200010. Если я изменил порядок функции в моем .c файле, хотя раздел .text все равно будет помещен в 0xd0200010, но основная функция не будет на этом адресе, а «-e main» вообще не работает.
Итак, как я могу сделать главную функцию на 0xd0200010? Могу ли я сделать это просто командой компилятора и компоновщика?
Как правило, вы пишете ассемблер, который устанавливает среду «C» (например, обнуление данных BSS, установка стека и т. Д.). Затем вы переходите к основной рутине 'bl _main'. Этот ассемблерный код находится в уникальном разделе, и вы используете собственный скрипт компоновщика, который позиционирует этот код в начале изображения. Для изображений * ELF * (не двоичных) вы можете использовать компоновщик 'ENTRY (start)', чтобы указать, куда идет начальный контроль. Это не работает для двоичного кода, и в значительной степени вы должны использовать [собственный скрипт компоновщика] (https://sourceware.org/binutils/docs/ld/Scripts.html). В Интернете есть различные примеры. –
Да, ты прав ... Я тоже понял, спасибо – demonguy