Forum: Compiler & IDEs Aufbau AVR hex datei


von Walter (Gast)


Lesenswert?

Hallo!

Ich suche Informationen über den Aufbau der von WINAVR oder AVRStudio
generierten HEX-dateien.

Herausgefunden habe ich bereits folgendes:

Beispielzeilen:
:101E00001FE51DBF12E01EBF8B9A93988C988F9888
:061F40005A95E1F7089537

- die 10 bzw.06 zeigt die Anzahl(in Hex)der Datenbytes in der Zeile an
- die nächsten zwei Bytes die Byteadresse des ersten Bytes
  hier 1E00 bzw. 1F40
- was das folgende Byte (00)beinhaltet weiss ich noch nicht.
- jetzt kommen die Datenbytes (hier 16 bzw. 6)
- das letzte Byte scheint eine Prüfsumme zu sein. Hab's mit XOR
  versucht, komme aber irgendwie nicht darauf. Vielleicht ist auch ein
anderer Algorithmus.

Wer weiß, wo ich Informationen dieses Themas betreffend finden kann?

MfG
Walter

von johnny.m (Gast)


Lesenswert?


von Walter (Gast)


Lesenswert?

Aha,

Wenn ich jetzt noch herausfinde,
wie die Prüfsumme berechnet wird, bin ich zufrieden.

Ziel ist es einen Atmel mittels Bootloader auszulesen und die Daten
dann in ein Hex-file abzuspeichern.

Es sollte mit sich mit Ponyprog wieder öffnen lassen.

von Rolf Magnus (Gast)


Lesenswert?


von johnny.m (Gast)


Lesenswert?

Gehst Du www.google.de und gibst Du ein "intel hex". Erster Link:
http://www.schulz-koengen.de/biblio/intelhex.htm
Manche Leute sind so was von unselbständig...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Außerdem können ordentliche Bedienprogramme für Bootloader
natürlich gleich ihex selbst abspeichern...

von Walter (Gast)


Lesenswert?

Na gut, besten Dank.

(Hätt ja sein können, das es etwas properietäres gewesen wäre.)

von Peter D. (peda)


Lesenswert?

1
int writehex( FILE *fp, ulong adr, uchar *data, int len )
2
{
3
  if( len ){
4
    int pruef;
5
    fprintf( fp, ":%02X%04lX00", len, adr );
6
    pruef = len + (adr & 0xFF) + (adr >> 8);
7
    for(; len--; data++){
8
      fprintf( fp, "%02X", *data );
9
      pruef += *data;
10
    }
11
    fprintf( fp, "%02X\r\n", -pruef & 0xFF );
12
    return 1;
13
  }
14
  fputs( ":00000001FF\r\n", fp );
15
  return 1;
16
}


Peter

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.