Эквивалентность .elf и .hex? (код, EEPROM, предохранители и биты блокировки — все в одном)

У меня есть все конфигурации (данные EEPROM, предохранители, биты блокировки) моего ATMega168A вместе с кодом в моих файлах C. В результате компиляции создается файл elf, который я использую как универсальный программный файл для производства.

В качестве пробы я преобразовал elf-файл в шестнадцатеричный с помощью avr-objcopy и увидел, что код и конфигурации все еще там (почему бы и нет).

Мой вопрос заключается в том, эквивалентны ли эти два файла в случае их использования для комплексного программирования. Происходит ли какое-либо критическое удаление данных между преобразованием эльфов в шестнадцатеричные числа, которое может повлиять на фактическое программирование?

Кроме того, я снова попытался преобразовать шестнадцатеричный файл в bin и снова увидел то же самое, но, конечно, с заполнением нулями. За исключением очевидной разницы в размере файла, есть ли какая-либо практическая разница при использовании файла bin и файла hex? Создает ли эта прокладка какие-либо проблемы? (Например, попытка записать 0 на несуществующие адреса).

Заранее спасибо.

, 👍1


1 ответ


Лучший ответ:

1

Мой вопрос заключается в том, эквивалентны ли эти два файла в случае их использования для комплексного программирования. Происходит ли какое-либо критическое удаление данных между преобразованием эльфов в шестнадцатеричные числа, которое может повлиять на фактическое программирование?

Ничего критического, но удаление данных происходит. Все, что есть в файле HEX, находится в файле ELF. То есть — весь скомпилированный машинный код и данные.

По сути, все, что записывается в чип, находится в файле HEX, и файл HEX может быть создан из того, что находится в файле ELF - следовательно, файл ELF содержит все, что есть в файле HEX.

Однако не все, что есть в файле ELF, попадает в файл HEX.

Файл ELF содержит гораздо больше информации. В основном эта информация предназначена для отладки. В коде есть такие вещи, как имена и расположение всех символов, то есть функций и переменных и т. д. Все ассемблерные инструкции сгруппированы по файлам исходного кода и номерам строк.

Ничего из этого не имеет отношения к среде Arduino, но когда вы используете профессиональные инструменты для разработки, вы можете использовать их для отладки и отслеживания вашей программы в реальном времени, пока она работает на реальном оборудовании.

Ничто из этого не имеет отношения к размещению вашей программы на чипе. Все это используется ПК.

,

Маженко, твои ответы величественны! Спасибо!, @grpolylogic