mikrocontroller.net

Forum: Compiler & IDEs Aufbau AVR hex datei


Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na gut, besten Dank.

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int writehex( FILE *fp, ulong adr, uchar *data, int len )
{
  if( len ){
    int pruef;
    fprintf( fp, ":%02X%04lX00", len, adr );
    pruef = len + (adr & 0xFF) + (adr >> 8);
    for(; len--; data++){
      fprintf( fp, "%02X", *data );
      pruef += *data;
    }
    fprintf( fp, "%02X\r\n", -pruef & 0xFF );
    return 1;
  }
  fputs( ":00000001FF\r\n", fp );
  return 1;
}


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.