mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik intel hex - file checksum


Autor: DS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin zusammen,

eine Frage zur Generierung von Checksummen für ganze files.
Wie man innerhalb (am Ende der Zeile) die Checksumme
im hex-file bildet, kann man ja ergogglen.
Wie sieht das aber mit der file-Checksumme aus, die, z.B.
ein Programmer erstellt?
Gibt es da allgemein übliche Verfahren?

Hintergrund ist, das ich Abweichungen bei verschiedenen
Programmern habe.

Ein paar Stichworte wären herzallerliebst.

Gruss
Dietmar

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Alter Hase (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Intel-"Zeilen-Checksumme" ist bekannt.
Die Abweichungen bei den Checksummen der div. Programmer
dürfte an der Genereierung der Checksummen liegen,
die der Programmerhersteller gewählt hat. Die sind
leider nicht mal von der Byteanzahl her gleich.
Ich würde versuchen vom Hersteller des Programmers
näheres zu erfahren, vielleicht hast du Glück und
erfährst wie es gemacht wird.
Wenn erlaubt, stell es dann doch auch hier ins Forum.

Wenn es um externes Programmieren geht:
Laß ein Muster programmieren, teste es aus, und
gib es dann frei. Behalte das Muster als Beleg.
(Beim Muster sollte man auf die Auslesesperre verzichten)
Achtung die Flags können, müssen aber nicht in der
Checksumme enthalten sein.

Autor: DS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank erst einmal.
@Peter:
Ja, da steht der Aufbau, aber INNERHALB des hex-files.
Es gibt aber eine komplette file-checksum.
Da suche ich den Algorithmus.

Alter Hase:
Ja- so haben wir den Ablauf auch immer eingehalten.
Nur gibt es noch Optionsbytes, die scheinbar mit
einbezogen sind, oder nicht.
Da wollte ich das nachvollziehen, wie das gemacht wurde.

Es geht übrigens um einen St62-Controller von STM.

Autor: Qwertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Es gibt aber eine komplette file-checksum.

Das INTEL-Hex-Format spezifiziert keine Checksumme für die gesamte 
Datei.
Es muss sich also um eine Variante dieses Formats handeln.

Autor: DS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das ist das Problem.
Deshalb meine Frage, ob es einen Tipp
für mich gibt.

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Qwertz schrieb:
>>Es gibt aber eine komplette file-checksum.
>
> Das INTEL-Hex-Format spezifiziert keine Checksumme für die gesamte
> Datei.
> Es muss sich also um eine Variante dieses Formats handeln.

Hallo,

wenn das so ist, könnte man ja die (wahrscheinlich vorletzte oder 
letzte) Zeile mit dieser Checksum streichen und hätte ein normales 
Intel-Hex-File, das sollte eigentlich jeder Programmer können. Ist es 
umgekehrt und der Programmer verlangt einen solchen Eintrag, müsste man 
natürlich Format und Berechnung kennen.

Programmer-Checksum: die meisten Programmer (ich hatte schon eine ganze 
Menge im Lauf der Jahre) addieren alle Bytes des Proms (nicht des 
Hexfiles!) und zeigen die Summe modulo 16 bit als 4stellige Hexzahl an. 
Überprüft wird das nicht, dient nur zur Kontrolle durch den Benutzer. 
Ausserdem ist es nicht genormt und somit auch nicht garantiert.

Gruss Reinhard

PS es ist verbreitete und vernünftige Praxis, diese 4stellige Hexzahl 
neben der Bezeichnung auf dem Prom zu vermerken und auch mit den 
Unterlagen zu speichern. Man kann noch weiter gehen und die korrekte 
Summe beim Start des Systems prüfen, oder alle Eproms so ergänzen, dass 
sie die Prüfsumme 0 haben (wie im PC).

Autor: Qwertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ja, das ist das Problem.
>Deshalb meine Frage, ob es einen Tipp
>für mich gibt.

>Es geht übrigens um einen St62-Controller von STM.

Wir würden ja gerne einen Tip geben. Aber die Angabe ST62 von STM reicht 
offenbar nicht aus. Schreib uns doch bitte, welche Programmierumgebung 
Du benutzt. Compiler, IDE, Programmer etcpp. Alles was hilfreich sein 
kann.

Autor: DS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Olala- Ihr wollt aber alles ganz genau wissen ; )
Ist aber auch kein Geheimnis.
Konkret ist es ein ST62T20C.
Programmiert wird in Assembler (AST6).
Die WINEE-Software von STM gibt eine 5-byte Checksumme aus.
Unser LLOYD-Research-Programmer aber 4byte.
Da ist immer in den beiden LSBs ein Unterschied.

Das wollte ich einfach entschlüsseln.
Ich habe jetzt einmal ein "Mini-Programm" erstellt:
hex-file
:050800000DD8FE4D04BF
:100FF000044D4980044D044D04040404044D09804B
:00000001FF
WINEE gibt als Checksumme 4DA heraus.
Auf den LLOYD habe ich gerade keinen Zugriff-
der ist in der Fertigung.

Wir haben auch die Checksumme als Vorgabe in den
Fertigungsunterlagen.
Nur dieser Unterschied "wurmt" uns.

Autor: Dieter Werner (dds5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manche Steuersoftware für Programmiergeräte füllt die unbenutzten 
Speicherbereiche mit 00, andere mit FF. Daraus ergibt sich zwangsweise 
schon ein Unterschied in der Prüfsumme.

Die mögliche Einbeziehung von Konfigurationsdaten in die Prüfsumme kann 
ebenfalls zur Problematik beitragen.


Ich habe mal das Hexfile geladen und bekomme als Prüfsumme 000FDFEF wenn
die nicht benutzten Bereiche FF enthalten.

00004DA bekomme ich, wenn vor dem Laden der Datei der Puffer mit 00 
gefüllt wird.

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.