<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=S-Record</id>
	<title>S-Record - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=S-Record"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=S-Record&amp;action=history"/>
	<updated>2026-05-31T14:11:37Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=S-Record&amp;diff=315935&amp;oldid=prev</id>
		<title>imported&gt;Invisigoth67: form</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=S-Record&amp;diff=315935&amp;oldid=prev"/>
		<updated>2025-10-21T14:07:56Z</updated>

		<summary type="html">&lt;p&gt;form&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Das Motorola-&amp;#039;&amp;#039;&amp;#039;S-Record&amp;#039;&amp;#039;&amp;#039;-Format ist ein [[ASCII]]-basiertes [[Datenformat]] zur Kodierung von [[Binärdatei]]en. Es ist auch als &amp;#039;&amp;#039;&amp;#039;SREC&amp;#039;&amp;#039;&amp;#039;- oder &amp;#039;&amp;#039;&amp;#039;S19&amp;#039;&amp;#039;&amp;#039;-Format bekannt. Hauptsächlich wird es zum Abspeichern des Programmcodes von [[Mikrocontroller]]n in [[Eingebettetes System|eingebetteten Systemen]] verwendet. Es wurde in den 1970er Jahren vom Hersteller [[Motorola]] für dessen [[Motorola 6800|6800]]-[[Mikroprozessor]] entwickelt.&lt;br /&gt;
&lt;br /&gt;
Ein ähnliches, wenn auch leicht unterschiedliches Format ist das [[Intel HEX|Intel-HEX]]-Format, welches u.&amp;amp;nbsp;a. für [[Intel]]-Prozessoren verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Die ASCII-Kodierung erlaubt die Bearbeitung bzw. das Öffnen der Datei mit einem [[Texteditor]]. Da es [[Prüfsumme]]n enthält, können bei einer Übertragung beschädigte Datensätze erkannt werden.&amp;lt;ref&amp;gt;[http://linux.die.net/man/5/srec_motorola srec - Linux man page]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
Eine S-Record-Datei besteht aus einer Reihe von ASCII-Datensätzen (engl. Records). Alle [[Hexadezimalzahlen]] sind [[Byte-Reihenfolge|Big endian]], d.&amp;amp;nbsp;h. das höchstwertige [[Byte]] wird als erstes, also auf der kleineren Adresse gespeichert. Die Datensätze haben folgende Struktur:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Start code&amp;#039;&amp;#039;&amp;#039;, ein Zeichen: &amp;#039;&amp;#039;S&amp;#039;&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Record type&amp;#039;&amp;#039;&amp;#039; (Datensatztyp), eine Ziffer, &amp;#039;&amp;#039;0&amp;#039;&amp;#039; bis &amp;#039;&amp;#039;9&amp;#039;&amp;#039;, definiert den Typ des Datensatzes&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Byte count&amp;#039;&amp;#039;&amp;#039; (die Anzahl der Bytes), zwei hexadezimale Ziffern, &amp;#039;&amp;#039;0&amp;#039;&amp;#039; bis &amp;#039;&amp;#039;F&amp;#039;&amp;#039;, beinhaltet die Anzahl der Bytes (also jeweils zwei hexadezimale Ziffern), die im restlichen Datensatz (Adresse, Daten und Prüfsumme) folgen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Adresse&amp;#039;&amp;#039;&amp;#039;, vier, sechs oder acht hexadezimale Ziffern (abhängig vom Datensatztyp), die die Speicheradresse der darauf folgenden Daten festlegen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Datenfeld&amp;#039;&amp;#039;&amp;#039;, eine Folge von 2&amp;#039;&amp;#039;n&amp;#039;&amp;#039; hexadezimalen Ziffern, also &amp;#039;&amp;#039;n&amp;#039;&amp;#039; Datenbytes&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Checksum&amp;#039;&amp;#039;&amp;#039; (Prüfsumme), zwei hexadezimale Ziffern – das [[Einerkomplement]] des niederwertigen Bytes der Summe von byte count, Adresse (byteweise) und der Daten (ebenfalls byteweise)&lt;br /&gt;
&lt;br /&gt;
Es gab einige Programme, die die Anzahl der Zeichen in einem S-Record aus Gründen der Kompatibilität mit [[Fernschreiber]]n auf 56 druckbare Zeichen begrenzten&amp;lt;ref name=&amp;quot;Programmer&amp;#039;s Reference Manual&amp;quot;&amp;gt;https://www.nxp.com/docs/en/reference-manual/M68000PRM.pdf (PDF; 2,4&amp;amp;nbsp;MB) Appendix C&amp;lt;/ref&amp;gt;. Eine UNIX-Manpage schreibt von einer Begrenzung auf 78 druckbare Zeichen&amp;lt;ref&amp;gt;{{Webarchiv|url=http://www.ee.nmt.edu/~teare/ee308l/datasheets/S_RECORD.TXT |wayback=20150619132413 |text=Archivierte Kopie |archiv-bot=2019-05-11 10:47:26 InternetArchiveBot }}&amp;lt;/ref&amp;gt;. Da von Motorola kein Limit definiert wurde, sollte ein Programm auch mit einem &amp;#039;&amp;#039;&amp;#039;Byte count&amp;#039;&amp;#039;&amp;#039; von 255, also mit 514 druckbaren – zuzüglich terminierender – Zeichen umgehen können&amp;lt;ref&amp;gt; http://www.macgui.com/usenet/?author=Ron+Widell&amp;amp;id=1600&amp;amp;group=45&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Es existieren die acht unten aufgeführten Datensatztypen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Record !! Beschreibung !! Adressbytes !! Datenfeld&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;S0&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;Block header&amp;#039;&amp;#039; (Block-Vorspann)|| 2 || Ja&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;S1&amp;#039;&amp;#039;&amp;#039; || Datenreihe || 2 || Ja&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;S2&amp;#039;&amp;#039;&amp;#039; || Datenreihe || 3 || Ja&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;S3&amp;#039;&amp;#039;&amp;#039; || Datenreihe || 4 || Ja&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;S5&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;Record count&amp;#039;&amp;#039; (Datensatzanzahl) || 2 || Nein&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;S6&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;Record count&amp;#039;&amp;#039; (Datensatzanzahl) || 3 || Nein&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;S7&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;End of block&amp;#039;&amp;#039; (Blockende) || 4 || Nein&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;S8&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;End of block&amp;#039;&amp;#039; (Blockende) || 3 || Nein&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;S9&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;End of block&amp;#039;&amp;#039; (Blockende) || 2 || Nein&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Der &amp;#039;&amp;#039;&amp;#039;S0&amp;#039;&amp;#039;&amp;#039;-Vorspann enthält keine Programmdaten, sondern herstellerspezifische Daten. Das Datenfeld ist folgendermaßen aufgebaut:&lt;br /&gt;
** Modulname (20 Zeichen)&lt;br /&gt;
** Version (2 Zeichen) (optional)&lt;br /&gt;
** Revision (2 Zeichen) (optional)&lt;br /&gt;
** Beschreibung (0–36 Zeichen) (optional)&lt;br /&gt;
* Im &amp;#039;&amp;#039;&amp;#039;S5&amp;#039;&amp;#039;&amp;#039;-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. Der &amp;#039;&amp;#039;&amp;#039;S6&amp;#039;&amp;#039;&amp;#039;-Datensatz hat die gleiche Funktion wie der &amp;#039;&amp;#039;&amp;#039;S5&amp;#039;&amp;#039;&amp;#039;-Datensatz und hat auch - bis auf das drei Byte große Adressfeld - den gleichen Aufbau.&lt;br /&gt;
* Die Adressfelder von &amp;#039;&amp;#039;&amp;#039;S7&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;S8&amp;#039;&amp;#039;&amp;#039;, oder &amp;#039;&amp;#039;&amp;#039;S9&amp;#039;&amp;#039;&amp;#039; können die Startadresse des Programms enthalten.&amp;lt;ref name= &amp;quot;Programmer&amp;#039;s Reference Manual&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
=== Beispiel mit 16-bit Adressen ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color: #ffc&amp;quot;&amp;gt;S&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcc&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #cfc&amp;quot;&amp;gt;0F&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #ccf&amp;quot;&amp;gt;0000&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #cff&amp;quot;&amp;gt;68656C6C6F21202020200000&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcf&amp;quot;&amp;gt;3B&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color: #ffc&amp;quot;&amp;gt;S&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcc&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #cfc&amp;quot;&amp;gt;1F&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #ccf&amp;quot;&amp;gt;0000&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #cff&amp;quot;&amp;gt;7C0802A6900100049421FFF07C6C1B787C8C23783C60000038630000&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcf&amp;quot;&amp;gt;26&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color: #ffc&amp;quot;&amp;gt;S&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcc&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #cfc&amp;quot;&amp;gt;1F&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #ccf&amp;quot;&amp;gt;001C&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #cff&amp;quot;&amp;gt;4BFFFFE5398000007D83637880010014382100107C0803A64E800020&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcf&amp;quot;&amp;gt;E9&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color: #ffc&amp;quot;&amp;gt;S&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcc&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #cfc&amp;quot;&amp;gt;11&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #ccf&amp;quot;&amp;gt;0038&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #cff&amp;quot;&amp;gt;48656C6C6F20776F726C642E0A00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcf&amp;quot;&amp;gt;42&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color: #ffc&amp;quot;&amp;gt;S&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcc&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #cfc&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #ccf&amp;quot;&amp;gt;0003&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcf&amp;quot;&amp;gt;F9&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color: #ffc&amp;quot;&amp;gt;S&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcc&amp;quot;&amp;gt;9&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #cfc&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #ccf&amp;quot;&amp;gt;0000&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color: #fcf&amp;quot;&amp;gt;FC&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Farblegende|#FFFFCC|Start code}}&lt;br /&gt;
{{Farblegende|#FFCCCC|Record type (Datensatztyp)}}&lt;br /&gt;
{{Farblegende|#CCFFCC|Byte count}}&lt;br /&gt;
{{Farblegende|#CCCCFF|Adresse}}&lt;br /&gt;
{{Farblegende|#CCFFFF|Daten}}&lt;br /&gt;
{{Farblegende|#FFCCFF|Checksum (Prüfsumme)}}&lt;br /&gt;
&lt;br /&gt;
Die Prüfsumme für den ersten Beispiel-Datensatz berechnet sich wie folgt: &amp;lt;math&amp;gt;{0F+00+00+68+65+6C+6C+6F+21+20+20+20+20+00+00}\ {{=}}\ 2C4 \rightarrow C4 \rightarrow \neg C4\ {{=}}\ 3B&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel mit 24-bit Adresse ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;span style=&amp;quot;background-color: #ffc&amp;quot;&amp;gt;S&amp;lt;/span&amp;gt;&amp;lt;span &lt;br /&gt;
        style=&amp;quot;background-color: #fcc&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;&amp;lt;span &lt;br /&gt;
        style=&amp;quot;background-color: #cfc&amp;quot;&amp;gt;14&amp;lt;/span&amp;gt;&amp;lt;span &lt;br /&gt;
        style=&amp;quot;background-color: #ccf&amp;quot;&amp;gt;0D0760&amp;lt;/span&amp;gt;&amp;lt;span &lt;br /&gt;
        style=&amp;quot;background-color: #cff&amp;quot;&amp;gt;FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF&amp;lt;/span&amp;gt;&amp;lt;span&lt;br /&gt;
        style=&amp;quot;background-color: #fcf&amp;quot;&amp;gt;87&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verwandte Dateiformate ==&lt;br /&gt;
Sehr ähnlich ist das [[Intel]] HEX-Format (auch kurz [[Intel HEX]]). Weitere Formate für diesen Anwendungsbereich sind z.&amp;amp;nbsp;B. der einfache [[Binärcode]] oder das [[JEDEC Solid State Technology Association|Jedec]]-Format.&lt;br /&gt;
&lt;br /&gt;
== Quellen ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.amelek.gda.pl/avr/uisp/srecord.htm Aufbau des S-Record-Formats]&lt;br /&gt;
* [http://srecord.sourceforge.net/ SRecord] (englisch) Eine Sammlung von Programmwerkzeugen zur Bearbeitung von S-Record-Dateien&lt;br /&gt;
* [https://pypi.python.org/pypi/hexformat hexformat] – Python-Bibliothek für die HEX-Formate SRecord und IntelHex&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenformat]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Invisigoth67</name></author>
	</entry>
</feed>