Разница в использовании avr-gcc и avr-ld при генерации файлов в формате ELF (исполняемый и связываемый) - PullRequest
0 голосов
/ 29 ноября 2018

Извините, если это может быть не по теме.
В процессе создания файлов .hex (формат Intel HEX) с использованием avr-gcc или avr-ld вывод (конечный результат) значительно отличается.В качестве минимального пояснения я говорю о шаге генерации ELF-файла сразу после генерации объектных файлов.

При первой попытке я использовал avr-ld для создания ELF-файла.Процесс работает плавно, но после генерации HEX-файлов и загрузки на мою доску он ничего не сделал (как при загрузке пустого HEX-файла).

Со второй попытки я следовал совету, найденному здесь :

При подключении важно указать тип MCU.Компилятор использует параметр -mmcu для выбора файлов запуска и библиотек времени выполнения, которые связаны между собой.Если этот параметр не указан, по умолчанию компилятор использует процессорную среду 8515, которая, безусловно, вам не нужна.

Он сделал, как я и ожидал.Загрузил файл HEX и моя доска обновилась соответственно.

Итак, мои вопросы таковы:

  1. Почему компоновщик (avr-ld) потерял информацию о используемом мной микроконтроллере.Я думал, что информация MCU хранится в файлах объектов.
  2. Какова логика этой конфигурации?Мой образ мышления неправильный (при использовании avr-gcc для компиляции / генерации файлов .o, avr-ld для связывания файлов .o и генерации файлов EFL, и avr-objcopy для удаления только полезной информации и изменения форматафайл ELF -> HEX)?
  3. Есть ли способ получить тот же вывод, используя avr-ld, как при использовании avr-gcc для генерации моего файла ELF?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...