У меня есть шестнадцатеричный файл, который нужно прошить на Atmel чип работает на устройстве Arduino.
В этом файле есть некоторые аспекты, которые я хотел бы изменить, прежде чем поместить его на свой Arduino, но у меня нет исходного кода C ++; просто шестнадцатеричный файл.
Есть ли эффективный способ взять файл .hex и собрать код C? Если так, то как?
Возможно, это не было доступно в то время, когда были даны другие ответы. Он покрывает .hex обратно ассемблеру. Вам может понадобиться знать архитектуру оригинального AVR, для которого она была предназначена. Хорошо работает для меня код, который я написал и скомпилировал. Я тестировал AVR-25 для Tiny 85. Надеюсь, это поможет. Было бы неплохо иметь офлайн-версию той же вещи!
http://www.onlinedisassembler.com/
Альтернативным коммерческим вариантом является IDA от https://www.hex-rays.com/
Я бы посмотрел на вывод АРН-objdump (глоток):
avr-objdump -j .sec1 -d -m avr5 foo.hex
Вам придется изменить слова, следующие за «-m» в вашей архитектуре. Даже когда / если это сработает, вы получите код сборки, который может не выглядеть так, как вы когда-либо писали. Имена переменных будут разными, а удобные функции Arduino будут выглядеть как грязный сборочный мусор.
Я надеюсь, что есть лучший способ, извините.
Смотрите также Форум AVR GCC — Использование avr-objdump для дизассемблирования шестнадцатеричного кода.