2013-05-23 9 views
6

Mam plik szesnastkowy, który ma być przesłany do układu Atmel działającego na urządzeniu Arduino.Jak ponownie zmontować plik .hex do C++ dla Arduino?

Istnieją pewne aspekty tego pliku, które chciałbym zmodyfikować przed umieszczeniem go na moim Arduino, ale nie mam źródła C++; tylko plik heksadecymalny.

Czy istnieje jakiś skuteczny sposób na pobranie pliku .hex i ponowne złożenie kodu C? Jeśli tak to jak?

+1

Nie, to niemożliwe, aby uzyskać oryginalny plik, lub cokolwiek nawet zdalnie patrząc jak w oryginalnym pliku. –

+0

Możesz go ponownie skompilować do kodu C, który możesz zmodyfikować, ale, jak powiedział Joachim, nie będzie wyglądał jak oryginał. –

+0

@ BenVoigt - w porządku. Jak mam to zrobić? Dzięki! –

Odpowiedz

7

Chciałbym spojrzeć na wyjściu avr-objdump (haustem):

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

Trzeba będzie zmienić słowa po „-m” do swojej architektury. Nawet jeśli/jeśli to zadziała to da ci kod C, który może nie wyglądać, co kiedykolwiek napisałeś. Nazwy zmiennych będą różne, a poręczne funkcje Arduino będą wyglądać jak niechlujne śmieci C. Mam nadzieję, że jest lepszy sposób, przepraszam.

Zobacz także AVR GCC forum - Using avr-objdump to disassemble hex code.

10

Mogło nie być dostępne w momencie udzielenia innych odpowiedzi. Pokrywa .hex z powrotem do asemblera. Być może trzeba znać architekturę oryginalnego AVR, do którego była przeznaczona. Działa dobrze dla mnie dla kodu, który napisałem i skompilowałem. Testowałem z AVR-25 dla Tiny 85. Mam nadzieję, że to pomaga. Byłoby miło mieć wersję offline tego samego! http://www.onlinedisassembler.com/ Alternatywnym rozwiązaniem jest komercyjny IDA z https://www.hex-rays.com/