hier mal eine Erklärung zu S-Records:
Das Motorola-S-Format
Eine Datei im Motorola-S-Format ist eine Textdatei mit beliebig vielen Zeilen, die Sedezimalziffern in ASCII-Darstellung enthalten. Die Zeilen werden mit CR, LF abgeschlossen. Diese Datei enthält Binärcode in ASCII-Form.
Die Datei kann (muß aber nicht) mit einer Einleitungszeile beginnen, dem Sign-On-Record. Man erkennt ihn am einleitenden S0 (Ziffer Null). Er enthält einen Kommentar, z. B. den Programmnamen (im Beispiel unten "DATA I/O"). S-Records enthalten pro Zeile eine Adresse, an der die Daten abgelegt werden sollen.
Jede Datenzeile beginnt mit zwei Startzeichen "S" und einer Ziffer. Die nächsten beiden Zeichen geben die hexadezimale Anzahl der Datenbytes in der Zeile an, wobei auch die Adreßangabe (2 Bytes) und die Prüfsumme mitgezählt werden (also Zahl der "echten" Datenbytes + 3). Darauf folgen vier Zeichen, welche die hexadezimale Adresse des ersten Bytes des Datenrecords angeben. Nun folgen die Datenbytes zweistellig hexadezimal. Leerzeichen werden überlesen. Zum Schluß folgt ein Byte Prüfsumme (zweistell. Hex.). Die Prüfsumme ist das Einerkomplement aus der Summe von Längenangabe, Adresse und Datenbytes. Der Typ des Records wird durch eine Ziffer bezeichnet:
0: Startrecord (siehe oben)
1,2,3: Datenrecord
7,8,9: Enderecord
Der Typ sorgt für die Unterscheidung der Adreßlänge:
Bei Typ 0 is die Adresse immer $0000 und 16-Bit (4 Ziffern) lang
Bei Typ 1 oder 9 is die Adresse 16-Bit (4 Ziffern) lang
Bei Typ 2 oder 8 is die Adresse 24-Bit (6 Ziffern) lang
Bei Typ 3 oder 7 is die Adresse 32-Bit (8 Ziffern) lang
Die letzte Zeile der Datei beginnt mit den Startzeichen "S" und der Ziffer 9, 8 oder 7. Er bildet den End-Of-File-Record. Ein Enderecord enthält keine Daten, aber die Adresse in diesem Record stellt die Startadresse des Programms dar.
Beispiel:
S0 0B 0000 44 41 54 41 20 49 2F 4F F4 <CR><LF>
S1 13 0000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FC <CR><LF>
S1 13 0010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF EC <CR><LF>
S1 13 0020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF DC <CR><LF>
S1 13 0030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF CC <CR><LF>
S1 13 0040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF BC <CR><LF>
S9 03 0000 FC <CR><LF> ¦
¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ Datenbytes Prüfsumme
¦ ¦ Adresse
¦ Längenangabe (Datenbytes + 3)
Record-Markierung
Quelle:
http://www.netzmafia.de/skripten/mikroc ... /kap6.html