Извините, если это может быть не по теме.
В процессе создания файлов .hex (формат Intel HEX) с использованием avr-gcc или avr-ld вывод (конечный результат) значительно отличается.В качестве минимального пояснения я говорю о шаге генерации ELF-файла сразу после генерации объектных файлов.
При первой попытке я использовал avr-ld
для создания ELF-файла.Процесс работает плавно, но после генерации HEX-файлов и загрузки на мою доску он ничего не сделал (как при загрузке пустого HEX-файла).
Со второй попытки я следовал совету, найденному здесь :
При подключении важно указать тип MCU.Компилятор использует параметр -mmcu для выбора файлов запуска и библиотек времени выполнения, которые связаны между собой.Если этот параметр не указан, по умолчанию компилятор использует процессорную среду 8515, которая, безусловно, вам не нужна.
Он сделал, как я и ожидал.Загрузил файл HEX и моя доска обновилась соответственно.
Итак, мои вопросы таковы:
- Почему компоновщик (
avr-ld
) потерял информацию о используемом мной микроконтроллере.Я думал, что информация MCU хранится в файлах объектов. - Какова логика этой конфигурации?Мой образ мышления неправильный (при использовании
avr-gcc
для компиляции / генерации файлов .o, avr-ld
для связывания файлов .o и генерации файлов EFL, и avr-objcopy
для удаления только полезной информации и изменения форматафайл ELF -> HEX)? - Есть ли способ получить тот же вывод, используя
avr-ld
, как при использовании avr-gcc
для генерации моего файла ELF?