- S-Record
-
Das Motorola S-Record-Format ist ein ASCII-basiertes Datenformat zur Kodierung von Binärdateien. Es ist auch als SREC oder S19-Format bekannt. Es wird hauptsächlich zur Abspeicherung von Programmcode von Mikrocontrollern in eingebetteten Systemen verwendet. Es wurde in den 1970er Jahren für den Motorola 6800 Mikroprozessor entwickelt.
Ein ähnliches, wenn auch leicht unterschiedliches Format ist das Intel HEX-Format, welches u.a. für Intel Prozessoren verwendet wird.
Die ASCII-Kodierung erlaubt die Bearbeitung bzw. das Öffnen der Datei mit einem Texteditor. Da es Prüfsummen enthält, können bei einer Übertragung beschädigte Datensätze erkannt werden.[1]
Inhaltsverzeichnis
Format
Eine S-Record Datei besteht aus einer Reihe von ASCII-Datensätzen (engl. Records). Alle Hexadezimalzahlen sind Big endian, d.h. das höchstwertige Byte wird als erstes, also auf der kleineren Adresse gespeichert. Die Datensätze haben folgende Struktur:
- Start code, ein Zeichen: S.
- Record type (Datensatztyp), eine Ziffer, 0 bis 9, definiert den Typ des Datensatzes.
- Byte count (die Anzahl der Bytes), zwei hexadezimale Ziffern, 0 bis F, beinhaltet die Anzahl der Bytes (also jeweils zwei hexadezimale Ziffern) die im restlichen Datensatz (Adresse, Daten und Prüfsumme) folgen.
- Adresse, vier, sechs oder acht hexadezimale Ziffern (abhängig vom Datensatztyp), die die Speicheradresse der darauf folgenden Daten festlegen.
- Datenfeld, eine Folge 2n hexadezimalen Ziffern, also n Datenbytes. Das Datenfeld kann zwischen 0 und 64 Bytes lang sein.
- Checksum (Prüfsumme), zwei hexadezimale Ziffern - das Einerkomplement des niederwertigen Bytes der Summe von byte count, Adresse (byteweise) und der Daten (ebenfalls byteweise).
Es existieren die acht unten aufgeführten Datensatztypen:
Record Beschreibung Adressbytes Datenfeld S0 Block header (Block Vorspann) 2 Ja S1 Datenreihe 2 Ja S2 Datenreihe 3 Ja S3 Datenreihe 4 Ja S5 Record count (Datensatzanzahl) 2 Nein S7 End of block (Blockende) 4 Nein S8 End of block (Blockende) 3 Nein S9 End of block (Blockende) 2 Nein - Der S0 Vorspann enthält keine Programmdaten sondern herstellerspezifische Daten. Das Datenfeld ist folgendermaßen aufgebaut:
- Modulname (20 Zeichen)
- Version (2 Zeichen)
- Revision (2 Zeichen)
- Beschreibung (0-36 Zeichen)
- Im S5 Datensatz ist die Anzahl der vorstehenden S1, S2 und S3 Datensätze in dem zwei Byte großen Adressfeld gespeichert. Dieser Datensatz enthält kein Datenfeld.
- Die Adressfelder von S7, S8, oder S9 können die Startadresse des Programmes enthalten. [2]
Beispiel
S00F000068656C6C6F202020202000003C S11F00007C0802A6900100049421FFF07C6C1B787C8C23783C6000003863000026 S11F001C4BFFFFE5398000007D83637880010014382100107C0803A64E800020E9 S111003848656C6C6F20776F726C642E0A0042 S5030003F9 S9030000FC
- Start code
- Record type (Datensatztyp)
- Byte count
- Adresse
- Daten
- Checksum (Prüfsumme)
Die Prüfsumme für den ersten Beispiel-Datensatz berechnet sich wie folgt: .
Quellen
Weblinks
- Aufbau des S-Record-Formats
- SRecord (Englisch) Eine Sammlung von Programmwerkzeugen zur Bearbeitung von S-Record Dateien.
- SB-Projects: fileformats: motorola - sehr übersichtliche Darstellung (englisch)
Wikimedia Foundation.