Sie sind auf Seite 1von 4

Intel HEX

Das Intel HEX-Format ist ein Datenformat zur Speiche- ein Zeilenende abgeschlossen. Der Aufbau des Zei-
rung und bertragung von binren Daten. Es wird heu- lenendes ist nicht deniert und medienabhngig. Intel-
te hauptschlich verwendet, um Programmierdaten fr Tools fr Streaming-Medien erzeugen immer ein CR/LF
Mikrocontroller bzw. Mikroprozessoren, EPROMs und (0D0AHEX).
hnliche Bausteine zu speichern. Es kann aber auch zur
Jeweils zwei Zeichen reprsentieren ein Datenbyte. Die
Speicherung von Lademodulen verwendet werden. Das Notation erfolgt hexadezimal, big-endian mit den Zei-
HEX-Format ist das lteste Datenformat seiner Art und
chen 0..9 und A..F, d.h. dass das hherwertige Halbby-
seit den 1970er Jahren in Gebrauch. Sptere Erweiterun- te zuerst steht. Gleichfalls erfolgen alle Angaben in den
gen untersttzen speziell die segmentierte Adressierung Adressfeldern Big-Endian. Kleinbuchstaben (a..f) sind in
der Intel-80x86-Prozessoren. der Denition nicht erwhnt, werden jedoch von den
Ein Intel HEX-File liegt im ASCII-Format vor. Die meisten Implementierungen untersttzt.
Bytes der kodierten Binrdaten werden jeweils als
Hexadezimalzahl aus zwei ASCII-Zeichen (0...9 und
A...F) dargestellt. HEX-Dateien knnen mit einem Text- 2.2 Datensatztypen
editor genet und modiziert werden. Die HEX-Datei
ist in etwa doppelt so gro wie die enthaltenen Binrda- 2.2.1 bersicht
ten, da die Darstellung eines Bytes mit zwei Bytes in hexa-
dezimaler Schreibweise erfolgt. Die Datenstze sind mit Es gibt sechs Datensatztypen (record types):
einer Prfsumme versehen, so dass bertragungsfehler Die Datenstze knnen in beliebiger Reihenfolge vor-
erkannt werden knnen. kommen, ein Endesatz (Typ 01) beendet die Verarbei-
tung.

1 Geschichte 2.2.2 Data Record (Typ 00)

Das Intel-Hex Format (Ursprnglich Intellec-Hex) wur- Der Datensatz enthlt die 16-Bit-Ladeadresse und die
de von Intel 1973 fr die Intellec Entwicklungssysteme Nutzdaten.
(MDS) entworfen um Programme von Lochstreifen zu
laden und starten. Auerdem sollte es die bermittlung n: Anzahl der Bytes im Datenfeld
der Daten zur ROM-Produktion vereinfachen. Gleichzei- Adresse: 16-Bit-Adresse fr die Speicherung des Daten-
tig wurde es zur Programmierung von (E)PROM mit- satzes
tels lochstreifen- oder lochkartengesteuerter EPROM- Daten: Datenfeld, n Bytes
Programmiergerte verwendet. Ab der Einfhrung von
Diskettenlaufwerken mit dem MCS Serie II unter ISIS
II (1975) wurden auch Dateien in diesem Format erstellt. 2.2.3 End of File Record (Typ 01)
Als Dateiendung dient seitdem HEX.
Der Datensatz markiert das Dateiende. In der ursprng-
lichen (8 Bit) Denition wird, fr ladbare Formate, im
2 Format Adressfeld die Startadresse des Programms (PC) ange-
geben. In den 16/32-Bit-Formaten muss diese 0000 sein.
Das hier beschriebene Format entspricht der Hexadeci-
mal Object File Format Specication[1] von Intel. 2.2.4 Extended Segment Address Record (Typ 02)

Der Datensatz enthlt die Basisadresse des Speicherseg-


2.1 Aufbau eines Datensatzes ments. Er wird verwendet, wenn der Umfang eines 16-
Bit-Adressraums (also 64 kByte) nicht ausreicht. Die im
Die Codierung ist (7 Bit) ASCII. Jeder Datensatz wird Datensatz enthaltene Adresse wird mit 16 (24 ) multipli-
durch einen Doppelpunkt (":") eingeleitet, besteht aus ziert und bei den folgenden data records (Typ 00) zu der
einer geraden Anzahl von Zeichen und wird durch dort enthaltenen 16-Bit-Adresse addiert. Das Adressfeld

1
2 5 QUELLEN, WEBLINKS

des Datensatzes vom Typ 02 ist immer 0000, die Lnge 2.4.1 Intel
ist 02.
Im Laufe der Prozessorentwicklung von Intel 4004 bis
heute wurden verschieden Varianten deniert:
2.2.5 Start Segment Address Record (Typ 03)

Der Datensatz speziziert bei Lademodulen die Start- 2.4.2 Andere Hersteller
adresse. Fr x86-Prozessoren ist dies der CS:IP Inhalt.
Der Datensatz kann an beliebiger Position auftauchen. Das HEX-Format wurde als Quasi-Standard vielfltig
Die Startadresse wird berechnet als Segment * 16 + O- verwendet. Dabei wurde die Byteorder im Datenfeld teil-
set. Das Adressfeld ist immer 0000, die Lnge ist 04. weise gendert, d.h. die Reihenfolge stimmt nicht mit der
Adresslage berein. Auerdem haben Hersteller (z. B.
Texas Instruments) die Adressierung gendert. Dort ent-
2.2.6 Extended Linear Address Record (Typ 04) spricht die Adresse nicht einem Byte sondern der Breite
eines Registers des Prozessors.
Zur Untersttzung eines 32-Bit-Adressraums enthlt das
Datenfeld die hherwertigen 16 Bit (ULBA Upper Line-
ar Base Address) einer 32-Bit-Adresse (LBA Linear Base 3 Beispiel
Address). Die niederwertigen 16 Bit werden als 0000 an-
genommen. Die Adressermittlung der folgenden Typ-00-
:020000021000EC :10010000214601360121470136007EFE09D2190140
Datenstze erfolgt als ULBA+DRLO+DRI Modulo 2^32
:100110002146017EB7C20001FF5F16002148011988
(DRLO - DATA Record Load Oset (Adressfeld des Da-
:10012000194E79234623965778239EDA3F01B2CAA7
ta Record Typ 0), DRI - Data Record Index (Byteposition
:100130003F0156702B5E712B722B732146013421C7
des Data Record Typ 0)). Das Adressfeld ist immer 0000,
:00000001FF
die Lnge ist 02.
Startcode
Byte count
2.2.7 Start Linear Address Record (Typ 05) Adresse
Typ
Der Datensatz speziziert bei Lademodulen die Start- Datenfeld
adresse. Bei x86-Prozessoren ist dies der Inhalt des EIP- Prfsumme
Registers. Das Adressfeld ist immer 0000, die Lnge ist
04. Die Prfsumme fr den ersten Beispiel-Datensatz be-
rechnet sich wie folgt:

2.3 Berechnung der Prfsumme 10+ 01 + 00+ 00+


21 + 46 + 01 + 36 + 01 + 21 + 47 + 01 + 36 + 00 + 7E + F E + 09 +
Die Prfsumme wird aus dem gesamten Datensatz aus- = 3C0 C0 C0 + 1 = 40 .
schlielich des Startcodes und der Prfsumme selbst be-
rechnet. Der Datensatz wird byteweise summiert, von der
Summe wird das niederwertige Byte genommen und da- 4 Verwandte Dateiformate
von wiederum das Zweierkomplement gebildet.
Das Zweierkomplement wird gebildet, indem man die Sehr hnlich ist das Motorola-S-Format (auch kurz S-
Bits des niederwertigen Bytes invertiert und dann 1 ad- Record, SREC oder S19). Auerdem existieren fr die-
diert. Dies kann man z. B. durch die Exklusiv-Oder- sen Anwendungsbereich auch weitere Formate, wie der
Verknpfung mit FFHEX und Addition von 01HEX er- einfache Binrcode oder das Jedec-Format.
reichen. So bleibt 00HEX unverndert, aus 01HEX wird
FFHEX usw.
Das Zweierkomplement drckt im Binrsystem eine ne-
5 Quellen, Weblinks
gative Zahl aus. Da die Prfsumme damit die negative
Summe der restlichen Bytes darstellt, gestaltet sich die Intel HEX Format (englisch)
berprfung eines Datensatzes auf Fehler sehr einfach. SB-Projects: leformats: intel hex - sehr bersicht-
Man summiert einfach die einzelnen Bytes eines Daten- liche Darstellung (englisch)
satzes inklusive der Prfsumme und erhlt als niederwer-
tiges Byte 00HEX, falls der Datensatz korrekt ist. IntelHex Project - Python library for Intel HEX les
manipulations

2.4 Varianten hexformat - Python Bibliothek fr HEX-Formate


IntelHex und SRecord
3

Intel HEX to bin C programm mit source code

6 Einzelnachweise
[1] Hexadecimal Object File Format Specication, Revision A
vom 6. Januar 1988
4 7 TEXT- UND BILDQUELLEN, AUTOREN UND LIZENZEN

7 Text- und Bildquellen, Autoren und Lizenzen


7.1 Text
Intel HEX Quelle: https://de.wikipedia.org/wiki/Intel_HEX?oldid=155205842 Autoren: Aka, Asdert, Razahn, Tom Knox, Der schiefe
Turm, DarkMoon, Uncopy, Kungfuman, Murdoc123, Rufus46, Thijs!bot, HubiB, XenonX3, Rainald62, Vrumfondel, VolkovBot, Gort,
Kh555, Sven.petersen, Eingangskontrolle, LinkFA-Bot, Luckas-bot, GrouchoBot, Krd, Martin scharrer, Obersachsebot, ArthurBot, Jager-
mic, EmausBot, RonMeier, SimDoc, KLBot2, Kijet, Boshomi, Henrik Haftmann, Sickness1, SmartAssLevelPro und Anonyme: 28

7.2 Bilder

7.3 Inhaltslizenz
Creative Commons Attribution-Share Alike 3.0