Forum: Mikrocontroller und Digitale Elektronik hex --> bin


von Günther F. (taraquedo)


Lesenswert?

Hallo!

Ich schreibe gerade einen Bootloader, der von SD-Karte das Programm 
laden kann. Dazu muss ich ein neues Programm natürlich zunächst auf eine 
SD-Karte schreiben. Also z.B. mit dd if=myprog.bin of=/dev/sda2.

Das AVR-Studio liefert mir standardmäßig jedoch nur eine hex-Datei. Das 
macht natürlich keinen Sinn, die auf die Karte zu spielen. Wie kann ich 
also den echten Maschinencode erzeugen lassen?

Grüße!

von _CH_ (Gast)


Lesenswert?

Hallo Günther,

wenn das Hex-file im Intel-Hex-Format ist, dann erzeugt dir das 
angehängte Program ein Bin-File. In diesem steht dann wirklich 
Maschinencode.
Das Program ist von der keil.com Seite.

Gruß,
Christian

von _CH_ (Gast)


Lesenswert?

Edit:
Verwendung in der Win-Konsole:
Pfad: hex2bin deinhexfile.hex

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

wenn du GNU-tools einsetzt (avrgcc):
Da gibt es das Programm objcopy. Damit kannst du unter anderem eine 
Intel-HEX Datei in eine Biärdatei umandlen.

Matthias

von Rolf Magnus (Gast)


Lesenswert?

Das Programm heißt avr-objcopy.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

stimmt. Aber das objcopy jeder beliebigen Architektur sollte es auch 
tun.

Matthias

von Sipp (Gast)


Lesenswert?

Macht das Sinn eine Hexdatei fuer einen Download in eine Binaerdatei zu 
wandeln ? Nicht unbedingt. Zum einen kann die Hexdatei mit Loechern, dh 
unprogrammierten Bereichen umgehen, Eine Binaerdatei enthaelt dort FF 
oder Nullen. Ich denke ich werde fuer mein Downloadprojekt mit 
Hexdateien arbeiten, und nicht mit Binaeren. Falls es sich um grosse 
Mengen geht kann man sich auf dem Hexfile auch noch einen Kompressor 
vorstellen. Der Ansatz mit Zeilen, Adressen und Daten ist zu gut um 
wegzuschauen.

von _CH_ (Gast)


Lesenswert?

Hallo,

@Sipp:
>Macht das Sinn eine Hexdatei fuer einen Download in eine Binaerdatei zu
>wandeln ? Nicht unbedingt.
Du hast schon recht. Im prinzip könnte er auch direkt mit dem hex-File 
arbeiten, aber der Weg über eine bin-Datei ist meiner Meinung nach für 
den Anfang sicherlich leichter, da eine Fehlerquelle und zwar die 
"Umrechnung" schon ausgeschlossen ist.
Soweit ich das richtig verstanden habe will er ja den Programmcode 
direkt von  SD-Karte lesen und da ist doch eine bin-Datei genau das 
richtige. Einfach auf die Karte kopieren und gut.

von Günther F. (taraquedo)


Lesenswert?

Genau so ist es. Auf der SD Karte sind zwei Partitionen. Eine ist eine 
FAT16, die vom Hauptprogramm verwendet wird. Der Bootloader wertet die 
zweite Partition aus, die aus reinen Daten besteht. Dort liest er eins 
zu eins die Daten aus der Partition und schreibt diese in den Flash des 
AVR. An einer Stelle relativ zum Partitionsanfang liegt dann ein 
Versionswort, an welchem der bootloader entscheidet, ob eine 
Aktualisierung notwendig ist.
Unter diesen Umständen wäre mir eine HEX Datei eher im Wege, da diese 
variable Länge hat. Das macht die Sache zwar nicht unmöglich, aber so 
ist sie schon etwas intuitiver.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.