www.wikidata.de-de.nina.az
Das Intel HEX Format ist ein Datenformat zur Speicherung und Ubertragung von binaren Daten Es wird heute hauptsachlich verwendet um Programmierdaten fur Mikrocontroller bzw Mikroprozessoren EPROMs und ahnliche Bausteine zu speichern Es kann aber auch zur Speicherung von Lademodulen verwendet werden Das HEX Format ist das alteste Datenformat seiner Art und seit den 1970er Jahren in Gebrauch Spatere Erweiterungen unterstutzen speziell die segmentierte Adressierung der Intel 80x86 Prozessoren Eine Intel HEX Datei liegt im ASCII Format vor Die Bytes der kodierten Binardaten werden jeweils als Hexadezimalzahl aus zwei ASCII Zeichen 0 9 und A F dargestellt HEX Dateien konnen mit einem Texteditor geoffnet und modifiziert werden Die HEX Datei ist in etwa doppelt so gross wie die enthaltenen Binardaten da die Darstellung eines Bytes mit zwei Bytes in hexadezimaler Schreibweise erfolgt Die Datensatze sind mit einer Prufsumme versehen so dass Ubertragungsfehler erkannt werden konnen Inhaltsverzeichnis 1 Geschichte 2 Format 2 1 Aufbau eines Datensatzes 2 2 Datensatztypen 2 2 1 Ubersicht 2 2 2 Data Record Typ 00 2 2 3 End of File Record Typ 01 2 2 4 Extended Segment Address Record Typ 02 2 2 5 Start Segment Address Record Typ 03 2 2 6 Extended Linear Address Record Typ 04 2 2 7 Start Linear Address Record Typ 05 2 3 Berechnung der Prufsumme 2 4 Varianten 2 4 1 Intel 2 4 2 Andere Hersteller 3 Beispiel 4 Verwandte Dateiformate 5 Quellen Weblinks 6 EinzelnachweiseGeschichte BearbeitenDas Intel Hex Format Ursprunglich Intellec Hex wurde von Intel 1973 fur die Intellec Entwicklungssysteme MDS entworfen um Programme von Lochstreifen zu laden und starten Ausserdem sollte es die Ubermittlung der Daten zur ROM Produktion vereinfachen Gleichzeitig wurde es zur Programmierung von E PROM mittels lochstreifen oder lochkartengesteuerter EPROM Programmiergerate verwendet Ab der Einfuhrung von Diskettenlaufwerken mit dem MCS Serie II unter ISIS II 1975 wurden auch Dateien in diesem Format erstellt Als Dateiendung dient seitdem HEX Format BearbeitenDas hier beschriebene Format entspricht der Hexadecimal Object File Format Specification 1 von Intel Aufbau eines Datensatzes Bearbeiten Jede Zeile reprasentiert einen Datensatz Die Zeichen Codierung ist 7 Bit ASCII Jeder Datensatz wird durch einen Doppelpunkt eingeleitet besteht aus einer geraden Anzahl von Zeichen und wird durch ein Zeilenende abgeschlossen Der Aufbau des Zeilenendes ist nicht definiert und medienabhangig Intel Tools fur Streaming Medien erzeugen immer ein CR LF 0D0AHEX Jeweils zwei Zeichen reprasentieren ein Datenbyte Die Notation erfolgt hexadezimal big endian mit den Zeichen 0 9 und A F d h dass das hoherwertige Halbbyte zuerst steht Gleichfalls erfolgen alle Angaben in den Adressfeldern big endian Kleinbuchstaben a f sind in der Definition nicht erwahnt werden jedoch von den meisten Implementierungen unterstutzt Intel Bezeichnung Inhalt VerwendungRECORD MARK Satzbeginn Doppelpunkt ASCII Kodierung 3AHEX RECLEN Datenlange Lange der Nutzdaten als zwei HexadezimalziffernLOAD OFFSET Ladeadresse 16 Bit Adresse Big Endian RECTYP Satztyp Datensatztyp 00 05 INFO or DATA Daten Nutzdaten RECLEN x 2 Zeichen CHKSUM Prufsumme Prufsumme uber den Datensatz ohne Satzbeginn Datensatztypen Bearbeiten Ubersicht Bearbeiten Es gibt sechs Datensatztypen record types Typ Bezeichnung Verwendung00 Data Record Nutzdaten01 End of File Record Dateiende sowie Startadresse bei 8 Bit Daten 02 Extended Segment Address Record Erweitere Segmentadresse fur nachfolgende Nutzdaten03 Start Segment Address Record Startsegmentadresse CS IP Register 04 Extended Linear Address Record Erweiterte lineare Adresse hoherwertige 16 Bit der Adresse fur nachfolgende Nutzdaten05 Start Linear Address Record Lineare Startadresse EIP Register Die Datensatze konnen in beliebiger Reihenfolge vorkommen ein Endesatz Typ 01 beendet die Verarbeitung Data Record Typ 00 Bearbeiten Der Datensatz enthalt die 16 Bit Ladeadresse und die Nutzdaten Startcode Anzahl der Bytes Adresse Typ Datenfeld PrufsummeLange 1 Zeichen 2 Ziffern 4 Ziffern 2 Ziffern 2n Ziffern 2 ZiffernInhalt n Adresse 00 Daten Prufsummen Anzahl der Bytes im DatenfeldAdresse 16 Bit Adresse fur die Speicherung des DatensatzesDaten Datenfeld n Bytes End of File Record Typ 01 Bearbeiten Der Datensatz markiert das Dateiende In der ursprunglichen 8 Bit Definition wird fur ladbare Formate im Adressfeld die Startadresse des Programms PC angegeben In den 16 32 Bit Formaten muss diese 0000 sein Startcode Anzahl der Bytes Adresse Typ PrufsummeLange 1 Zeichen 2 Ziffern 4 Ziffern 2 Ziffern 2 ZiffernInhalt 00 0000 01 FFExtended Segment Address Record Typ 02 Bearbeiten Das Datenfeld des Extended Segment Address Record erweiterte Segmentadresse enthalt Bit 4 19 des Adresssegmentes der nachfolgenden Data Records Zahlung beginnend mit 0 in Fallen in denen der Umfang eines 16 Bit Adressraums also 64 kByte nicht ausreicht Die im Datenfeld enthaltene Adresse wird dabei um 4 Bit nach links verschoben entsprechend einer Multiplikation mit 2 4 displaystyle 2 4 nbsp 16 und bei den folgenden Data Records Typ 00 zu den dort enthaltenen 16 Bit Adressen addiert Der Extended Segment Address Record bleibt bis zur Anderung durch einen anderen Extended Segment Address Record wirksam Das Adressfeld des Datensatzes vom Typ 02 ist immer 0000 die Lange ist 02 2 Startcode Anzahl der Bytes Adresse Typ Datenfeld PrufsummeLange 1 Zeichen 2 Ziffern 4 Ziffern 2 Ziffern 4 Ziffern 2 ZiffernInhalt 02 0000 02 Segment PrufsummeStart Segment Address Record Typ 03 Bearbeiten Der Datensatz spezifiziert bei Lademodulen die Startadresse Fur x86 Prozessoren ist dies der CS IP Inhalt Der Datensatz kann an beliebiger Position auftauchen Die Startadresse wird berechnet als Segment 16 Offset Das Adressfeld ist immer 0000 die Lange ist 04 Startcode Anzahl der Bytes Adresse Typ Datenfeld PrufsummeLange 1 Zeichen 2 Ziffern 4 Ziffern 2 Ziffern 4 Ziffern 4 Ziffern 2 ZiffernInhalt 04 0000 03 Segment Offset PrufsummeExtended Linear Address Record Typ 04 Bearbeiten Das Datenfeld des Extended Linear Address Record erweiterte lineare Adresse auch 32 bit Adressdatensatz oder HEX386 Record dient der Unterstutzung eines 32 Bit Adressraumes mit einer 4 GB Grenze und enthalt mit Bit 16 31 die hoherwertigen 16 Bit ULBA Upper Linear Base Address Zahlung beginnend mit 0 einer 32 Bit Adresse LBA Linear Base Address Der Adressdatensatz gilt fur alle nachfolgenden Typ 00 Datensatze bis er durch einen anderen erweiterten Adressdatensatz ersetzt wird Die absolute Speicheradresse eines Typ 00 Datensatzes ergibt sich indem dem Adressfeld dieses Datensatzes die Adressdaten aus dem erweiterten Adressdatensatz vorangestellt werden Wenn einem Typ 00 Datensatz innerhalb eines 32 Bit Adressraumes kein Typ 04 Adressdatensatz vorangestellt ist werden die oberen 16 Adressbits standardmassig auf 0000 gesetzt 2 Das Adressfeld des erweiterten Adressdatensatzes selber wird bei einer Lange von 02 stets als 0000 gesetzt Startcode Anzahl der Bytes Adresse Typ Datenfeld PrufsummeLange 1 Zeichen 2 Ziffern 4 Ziffern 2 Ziffern 4 Ziffern 2 ZiffernInhalt 02 0000 04 ULBA Adresse high word PrufsummeStart Linear Address Record Typ 05 Bearbeiten Der Datensatz spezifiziert bei Lademodulen die Startadresse Bei x86 Prozessoren ist dies der Inhalt des EIP Registers Das Adressfeld ist immer 0000 die Lange ist 04 Start code Anzahl der Bytes Adresse Typ Datenfeld PrufsummeLange 1 Zeichen 2 Ziffern 4 Ziffern 2 Ziffern 8 Ziffern 2 ZiffernInhalt 04 0000 05 EIP PrufsummeBerechnung der Prufsumme Bearbeiten Die Prufsumme wird aus dem gesamten Datensatz ausschliesslich des Startcodes und der Prufsumme selbst berechnet Der Datensatz wird byteweise summiert von der Summe wird das niederwertige Byte genommen und davon wiederum das Zweierkomplement gebildet Das Zweierkomplement wird gebildet indem man die Bits des niederwertigen Bytes invertiert und dann 1 addiert Dies kann man z B durch die Exklusiv Oder Verknupfung mit FFHEX und Addition von 01HEX erreichen So bleibt 00HEX unverandert aus 01HEX wird FFHEX usw Das Zweierkomplement druckt im Binarsystem eine negative Zahl aus Da die Prufsumme damit die negative Summe der restlichen Bytes darstellt gestaltet sich die Uberprufung eines Datensatzes auf Fehler sehr einfach Man summiert einfach die einzelnen Bytes eines Datensatzes inklusive der Prufsumme und erhalt als niederwertiges Byte 00HEX falls der Datensatz korrekt ist Varianten Bearbeiten Intel Bearbeiten Im Laufe der Prozessorentwicklung von Intel 4004 bis heute wurden verschiedene Varianten definiert Variante Einsatz Erlaubte SatztypenI08HEX 4 8 Bit CPU 4004 8085 00 Data 01 End of File I16HEX 16 Bit CPU 8086 186 286 00 Data 01 End of File 02 Extended Segment Address 03 Start Segment Address I32HEX 32 Bit CPU ab 80386 00 Data 01 End of File 02 Extended Segment Address 03 Start Segment Address 04 Extended Linear Address 05 Start Linear Address Andere Hersteller Bearbeiten Das HEX Format wurde als Quasi Standard vielfaltig verwendet Dabei wurde die Byteorder im Datenfeld teilweise geandert d h die Reihenfolge stimmt nicht mit der Adresslage uberein Ausserdem haben Hersteller z B Texas Instruments die Adressierung geandert Dort entspricht die Adresse nicht einem Byte sondern der Breite eines Registers des Prozessors Beispiel Bearbeiten 02 0000 02 1000 EC 10 0100 00 214601360121470136007EFE09D21901 40 10 0110 00 2146017EB7C20001FF5F160021480119 88 10 0120 00 194E79234623965778239EDA3F01B2CA A7 10 0130 00 3F0156702B5E712B722B732146013421 C7 00 0000 01 FF Startcode Byte count Adresse Typ Datenfeld PrufsummeDie Prufsumme fur den zweiten Beispiel Datensatz berechnet sich wie folgt 10 displaystyle 10 nbsp 01 00 displaystyle 01 00 nbsp 00 displaystyle 00 nbsp 21 46 01 36 01 21 47 01 36 00 7 E F E 09 D 2 19 01 displaystyle 21 46 01 36 01 21 47 01 36 00 7E FE 09 D2 19 01 nbsp 3 C 0 C 0 C 0 1 40 displaystyle 3C0 rightarrow C0 rightarrow neg C0 1 40 nbsp Verwandte Dateiformate BearbeitenSehr ahnlich ist das Motorola S Format auch kurz S Record SREC oder S19 Ausserdem existieren fur diesen Anwendungsbereich auch weitere Formate wie der einfache Binarcode oder das Jedec Format Quellen Weblinks BearbeitenIntel HEX Format englisch SB Projects fileformats intel hex sehr ubersichtliche Darstellung englisch hexformat Python Bibliothek fur HEX Formate IntelHex und SRecord Intel HEX to bin C programm mit source code SwiftIntelHex Swift package zum Parsen von Intel HEX files fur iOS and macOS Einzelnachweise Bearbeiten Hexadecimal Object File Format Specification Revision A vom 6 Januar 1988 a b GENERAL Intel HEX File Format ARM Germany GmbH abgerufen am 25 November 2022 englisch Abgerufen von https de wikipedia org w index php title Intel HEX amp oldid 237336209