2013-05-23 9 views
6

Ich habe eine Hex-Datei, die auf einen Atmel Chip auf einem Arduino-Gerät blinken soll.Wie stelle ich eine .hex-Datei in C++ für Arduino wieder zusammen?

Es gibt bestimmte Aspekte dieser Datei, die ich ändern möchte, bevor Sie es auf meinem Arduino, aber ich habe nicht die Quelle C++; nur die Hex-Datei.

Gibt es eine effiziente Möglichkeit, eine .hex-Datei zu erstellen und den C-Code wieder zusammenzusetzen? Wenn das so ist, wie?

+1

Nein, es ist unmöglich, die ursprüngliche Datei, oder irgendetwas auch nur entfernt die aussieht wie die Originaldatei zu erhalten. –

+0

Sie können es wieder in C-Code dekompilieren, den Sie ändern können, aber wie Joachim sagte, wird es nicht wie das Original aussehen. –

+0

@ BenVoigt - das ist in Ordnung. Wie würde ich das machen? Vielen Dank! –

Antwort

7

ich am Ausgang des avr-objdump (schluck) aussehen:

avr-objdump -j .sec1 -d -m avr5 foo.hex 

Sie werden die Worte nach dem „-m“ Ihre Architektur ändern. Selbst wenn das funktioniert, gibt es den C-Code, der vielleicht gar nicht so aussieht, wie du ihn jemals geschrieben hast. Die Variablennamen unterscheiden sich, und die praktischen Arduino-Funktionen sehen aus wie schmutziger C-Müll. Ich hoffe, es gibt einen besseren Weg, sorry.

Siehe auch AVR GCC forum - Using avr-objdump to disassemble hex code.

10

Dies war zu dem Zeitpunkt, als die anderen Antworten gegeben wurden, möglicherweise nicht verfügbar. Es konvertiert die .hex zurück zum Assembler. Möglicherweise müssen Sie die Architektur des ursprünglichen AVR kennen, für den es gedacht war. Funktioniert gut für Code, den ich geschrieben und kompiliert habe. Ich habe mit AVR-25 für Tiny 85 getestet. Hoffe es hilft. Wäre schön, eine Offline-Version der gleichen Sache zu haben! http://www.onlinedisassembler.com/ Eine alternative kommerzielle Option ist IDA von https://www.hex-rays.com/