itlhx0b.png
Edit v1.002 from 2007-12-16 to 2010-09-25 by HSc

Intel-Hex-Datenübertragungsformat

Beschreibung des Formats, in welchem binären Programmcode von einem Intel-System auf eine anderes übertragen werden. Ein Einsatz ist zum Beispiel die Übertragung des binären Programmcodes von einer Windows Arbeitsstation auf einen Mikrocontroller, wie den 8051er.

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

Behandelt wird hier das Format der Datei, welche vom Entwicklersystem, z. B. Computer, zum Zielsystem, z. B. Ein-Chip-Mikrorechner, übertragen und von diesem im Speicher abgelegt werden kann. Der Inhalt ist ein ASCII−Text und die Endung der Datei lautet i.d.R. *.HEX!

Variante A

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
    


Variante B

Tabelle 1: Der Aufbau des Formates
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.
  • Typ=00H bedeutet es ist ein Datenblock;
  • Typ=01H bedeutet es ist ein Endeblock;
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.
Das Format dieser Variante ist, gegenüber der Variante A, kompakter und damit mehr maschinenfreundlicher.

Beispiel: BSB_B.HEX

:020000040000FA
:1000000083161E308500831205140920051009206F
:10001000042846308E0046308C0046308D008C0B14
:100020000F2846308C008D0B0F2846308D008E0B2C
:040030000F2808008D
:02400E00F13F80
:00000001FF
     
Nehmen wir die vorletzte Datenübertragung vor.


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
  • das Format A
           NN AAAA BB BB BB BB CCCC
           
    mit der Prüfsumme über alle BB's oder
    das Format B
           NN 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.
Durch das Ermitteln der Prüfsumme nach beiden Vorgehensweisen und dem Vergleich mit der Prüfsumme, kann der Loader ermitteln, ob es sich um die Variante A oder B handelt. Der Test kann, zur Sicherheit, an mehreren Datenzeilen durchgeführt werden.


gotop.gif Nach Oben