Forum: Mikrocontroller und Digitale Elektronik Binär-Hex-Konverter / Intel-Hex-File


von Stefan (Gast)


Lesenswert?

Hallo,

ich habe ein Hex-File für einen Atmega88. Die Software lässt sich über 
das JTAG-ICEmkII problemlos einspielen. Nur beim normalen Programmieren 
über ISP gibt es immer die Fehlermeldung, das die Software angeblich 
nicht in das Device passt.

Nun habe ich hier im Forum einen Beitrag gefunden, wo ein ähnliches 
Problem auftrat. Anscheinend ist im Hex-File eine Zeile überflüssig, die 
irgendwie zu viele Daten im EEPROM ablegt. Diese Zeile hab ich wohl 
gefunden und der Code läuft anscheinend Fehlerfrei. Doch irgendwie bin 
ich da nicht ganz sicher, diese Zeile einfach zu löschen.

Jetzt sagte mir jemand, ich könnte das doch mit einem 
Binär-Hex-Converter überprüfen. Den hab ich mir auch schon besorgt, 
jedoch weiß ich nicht, wie ich diesen auf mein Problem anwenden soll. 
Hat da von euch schon mal jemand mit gearbeitet und kann mir sagen, was 
genau ich da machen muss?

von Stefan (Gast)


Lesenswert?

Hmm,

hat noch keiner mit so nem Teil gearbeitet?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Das GNU Standardtool für die Umwandlung von Objektdateien heisst objcopy

Manual:
http://ccrma.stanford.edu/planetccrma/man/man1/avr-objcopy.1.html

Ein typischer Einsatz ist das Erzeugen des HEX-Files aus dem ELF-File 
inkl. Abtrennen der EPROM-Daten. Dies wird typischerweise in einem 
Makefile als Buildcommando definiert 
(http://www.mikrocontroller.net/articles/Beispiel_Makefile)
1
# Create final output files (.hex, .eep) from ELF output file.
2
#1
3
  %.hex: %.elf
4
  @echo
5
  @echo $(MSG_FLASH) $@
6
  $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
7
#2
8
  %.eep: %.elf
9
  @echo
10
  @echo $(MSG_EEPROM) $@
11
  -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
12
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@

Bei #1 werden aus dem ELF-File die EPROM-Daten entfernt 
(-R(emove-section)) und eine Ausgabedatei im FORMAT (z.B. FORMAT = ihex) 
erzeugt.

Bei #2 werden die EPROM-Daten in eine spezielle Datei geschrieben.

Überprüfe dein Makefile doch mal, ob sich darin ähnliche Kommandos 
befinden.

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.