Двоичный файл, созданный MSP430GCC, имеет странный начальный адрес для текстового сегмента.

После компиляции примерной программы на C с msp430-gcc (LTS 20120406 не исправлен) для MSPG2211 я получил следующий вывод с помощью команды readelf:

заголовок раздела

изображение раздела

заголовок программы

Сегмент изображения

Адресное пространство микроконтроллера MSPG2211 имеет следующую структуру:

0x0000 - 0x01FF - Периферийные устройства

0x0200 - 0x027F - ОЗУ

0x1000 - 0x10FF - Flash (информационная память)

0x1100 - 0xF7FF -???

0xF800 - 0xFFFF - Flash (память кода + векторы прерываний)

Текстовый раздел, показанный в заголовке раздела, начинается с 0xF800, который является первым адресом памяти кода.

Текстовый сегмент, включающий только текстовый раздел, больше текстового раздела и начинается уже с 0xF76C.

Как я понял, загружаемые сегменты загружаются по указанным физическим адресам для выполнения программы.

Так почему начальный адрес текстового сегмента находится в неопределенной области памяти?

1 ответ

Решение

Некоторые из разделов имен (например, .text) содержат данные, которые фактически загружаются в MCU.

Однако заголовки программы ELF содержат только метаданные; их адрес не имеет значения.

Другие вопросы по тегам