Эквивалентность .elf и .hex? (код, EEPROM, предохранители и биты блокировки — все в одном)
У меня есть все конфигурации (данные EEPROM, предохранители, биты блокировки) моего ATMega168A вместе с кодом в моих файлах C. В результате компиляции создается файл elf, который я использую как универсальный программный файл для производства.
В качестве пробы я преобразовал elf-файл в шестнадцатеричный с помощью avr-objcopy и увидел, что код и конфигурации все еще там (почему бы и нет).
Мой вопрос заключается в том, эквивалентны ли эти два файла в случае их использования для комплексного программирования. Происходит ли какое-либо критическое удаление данных между преобразованием эльфов в шестнадцатеричные числа, которое может повлиять на фактическое программирование?
Кроме того, я снова попытался преобразовать шестнадцатеричный файл в bin и снова увидел то же самое, но, конечно, с заполнением нулями. За исключением очевидной разницы в размере файла, есть ли какая-либо практическая разница при использовании файла bin и файла hex? Создает ли эта прокладка какие-либо проблемы? (Например, попытка записать 0 на несуществующие адреса).
Заранее спасибо.
@grpolylogic, 👍1
1 ответ
Лучший ответ:
Мой вопрос заключается в том, эквивалентны ли эти два файла в случае их использования для комплексного программирования. Происходит ли какое-либо критическое удаление данных между преобразованием эльфов в шестнадцатеричные числа, которое может повлиять на фактическое программирование?
Ничего критического, но удаление данных происходит. Все, что есть в файле HEX, находится в файле ELF. То есть — весь скомпилированный машинный код и данные.
По сути, все, что записывается в чип, находится в файле HEX, и файл HEX может быть создан из того, что находится в файле ELF - следовательно, файл ELF содержит все, что есть в файле HEX.
Однако не все, что есть в файле ELF, попадает в файл HEX.
Файл ELF содержит гораздо больше информации. В основном эта информация предназначена для отладки. В коде есть такие вещи, как имена и расположение всех символов, то есть функций и переменных и т. д. Все ассемблерные инструкции сгруппированы по файлам исходного кода и номерам строк.
Ничего из этого не имеет отношения к среде Arduino, но когда вы используете профессиональные инструменты для разработки, вы можете использовать их для отладки и отслеживания вашей программы в реальном времени, пока она работает на реальном оборудовании.
Ничто из этого не имеет отношения к размещению вашей программы на чипе. Все это используется ПК.
- Поскольку double и float представляют один и тот же тип данных (обычно), что предпочтительнее?
- Программирование микроконтроллера Attiny85 без arduino
- Использование Arduino Nano для программирования (как ISP) автономного 328p
- Как проверить, установлен ли пин?
- Почему я получаю разные результаты при компиляции одного и того же кода с разными ide?
- Как объявить массив переменного размера (глобально)
- Программирование Arduino с использованием Python, а не C/C ++
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
Маженко, твои ответы величественны! Спасибо!, @grpolylogic