Edit v5.001 from 2007-12-16 to 2022-11-30 by HSc
Intel-Hex-Datenübertragungsformat
Beschreibung des Formats, in welchem binären Programmcode von einem vom Entwicklersystem, z. B. Computer auf eine anderes Zielsystem, z. B. Ein-Chip-Mikrorechner, übertragen und von diesem im Speicher abgelegt werden kann. Ein Einsatz ist zum Beispiel die Übertragung des binären Programmcodes auf einen Mikrocontroller, wie den 8051er.
Der Inhalt ist ein ASCII−Text und die Endung der Datei lautet i.d.R. *.HEX!
Intel-Hex-Format- mit dem Format in der Variante A und B an sich, sowie einem Beispiel und
- die Übertragung zum Zielsystem mit der Ermittlung der genutzten Variante.
Format Variante A
Wie sieht also das Format aus?
Jede Zeile enthält folgende
Daten im hexadezimalen Format:
- Anzahl der Programmbytes in dieser Zeile;
- Adresse ab der die Daten im Speicher abgelegt werden sollen;
- Ein Doppelpunkt als Trennzeichen zwischen Adresse und den Datenbytes;
- die Daten selbst, wobei es pro Zeile maximal 16 Bytes sind und
- als Letztes die Prüfsumme der Datenbytes, gebildet durch das Aufaddieren der Bytes.
- das Leerzeichen bzw.
- nach der Adresse der Doppelpunkt
Beispiel: BSP_A.HEX
10 4100:75 70 10 75 71 11 75 72 12 75 73 13 75 71 50 75 058B 10 4110:71 52 75 60 00 75 61 01 75 62 02 75 63 03 85 71 0519 08 4120:60 75 61 71 85 71 62 22 0321 05 4200:74 15 F5 70 22 0210
In der Letzten und damit 4. Zeile steht zum Beispiel:
-
05H
= Es folgen 05 Hexa Datenbytes in dieser Zeile nach der Adresse; -
4200H
= ist die Speicheradresse des 1. Bytes 74H, 4201H für das 2. Byte 15H, usw.; - : als Trennzeichen;
-
74H 15H F5H 70H 22H
= das sind die angekündigten 5 Datenbytes; -
0210H
= Die Prüfsumme der 5 Datenbytes, gebildet durch eine Addition der 5 hexadezimalen Zahlen:74H +15H +F5H +70H +22H ------ 10H = 16D 20H = 32D ============= 210H = 336D
Zielsystem
Im Zielsystem wird,
während oder nach dem Empfang der Datei,
ein Ladeprogramm,
wie im Film "Matrix",
aufgerufen,
welches die Datei liest und
damit weiß wie viele Bytes (NN)
ab der Zeilenadresse (AAAA) abgelegt werden sollen.
An Hand der Berechung der Summe der Bytes (BB) und
dem Vergleich mit der Prüfsumme (CCCC)
kann es sich von der Richtigkeit überzeugen.
Abbruch und Ausgabe einer Fehlermeldung erfolgt wenn
Abbruch und Ausgabe einer Fehlermeldung erfolgt wenn
-
das Format A
NN AAAA BB BB BB BB CCCC
mit der Prüfsumme über alle BB's oder
das Format BNN AAAA TT BB BB BB BB CCCC
mit der Prüfsumme über alle Datenbytes (NN, AA, TT und BB) nicht einhalten wird; - die Prüfsumme mit dem Wert CCCC, am Ende der der Zeile, nicht übereinstimmt.
Format Variante B
Position in Bytes |
Länge in Bytes |
Bedeutung |
---|---|---|
1. | 1 | Ein Doppelpunkt ":" als Kennzeichen für den Beginn einer Zeile. |
2. | 1 | Anzahl der Datenbytes in diesem Block. Die Anzahl kann von 00H bis 10H reichen; |
3. | 1 | High−Teil der Startadresse dieses Datenblocks. |
4. | 1 | Low−Teil der Startadresse dieses Datenblocks. |
5. | 1 |
Typ des Datenblocks.
Davon gibt es zwei verschiedenen.
|
6. | x | x Bytes Daten. |
6+x+1. | 2 | Die Prüfsumme; |
6+x+3. | 2 | Das Kennzeichen für das Zeilenende, bestehend aus den zwei Bytes für das Carrige Return (CR=13H) und das Line Feed (LF=10H). Dies wird unter Windows bei drücken der Taste Enter in der Textverarbeitung eingefügt und bewirkt den Zeilenumbruch. |
Beispiel: BSB_B.HEX
:020000040000FA :1000000083161E308500831205140920051009206F :10001000042846308E0046308C0046308D008C0B14 :100020000F2846308C008D0B0F2846308D008E0B2C :040030000F2808008D :02400E00F13F80 :00000001FFNehmen wir die vorletzte Datenübertragung vor.
- Nach dem Doppelpunkt steht eine 02H für 2 Datenbytes.
- Diese sollen ab Adresse 400EH im Hauptspeicher stehen.
- Der Typ des Datenblocks lautet 00H und damit ist er ein reiner Datenblock.
- Die Datenbytes lauten 0F1H und 3FH.
- Und als letztes die Prüfsumme 02H+40H+0EH+00H+0F1H+3FH=80H die über alle Bytes in diesen Datenblock berechnet wird.