S-Record

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

S-Record (également connu sous le nom SREC ou S19) est un format de représentation de fichier binaire en ASCII[1] développé dans les années 1970 par la société Motorola. Il était utilisé alors pour la programmation du microprocesseur Motorola 6800. Le format textuel offre de nombreux avantages sur le format binaire : il peut être imprimé, inspecté ou modifié avec un éditeur de texte ordinaire. Ces fichiers sont utilisés pour le transfert de programmes vers les programmateurs d'EPROM en communication série (RS-232).

Il est toujours utilisé en informatique embarquée ainsi que son équivalent développé au même moment par la société Intel, le format HEX (Intel).

Format[modifier | modifier le code]

Un fichier au format S-Record est constitué de lignes de caractères ASCII ('enregistrement') relativement courtes commençant par le caractère 'S' (d'où le nom), contenant des paires de caractères hexadécimaux et terminées par un retour à la ligne. Tous les nombres hexadécimaux sont en big endian.

La structure de chaque enregistrement est la suivante :

  1. S, le caractère débutant l'enregistrement
  2. X, un chiffre de 0 à 9 définissant le type d'enregistrement.
  3. NN, le nombre d'octets de données contenus dans l'enregistrement (en comptant l'adresse et la somme de contrôle). Il s'agit d'une paire de chiffres hexadécimaux.
  4. AAAA, AAAAAA ou AAAAAAAA, une adresse de 2, 3 ou 4 octets représentée par 4, 6 ou 8 chiffres hexadécimaux (big endian). Il s'agit de l'adresse mémoire du premier octet de donnée.
  5. XXXX..., une séquence de paires de chiffres hexadécimaux représentant les octets de données.
  6. NN, une somme de contrôle (en anglais, checksum) deux chiffres hexadécimaux qui représentent le complément à FF (hexadécimal) de l'octet le moins significatif de la somme des octets représentant le nombre d'octets de données, l'adresse et les données.

Il existe 8 types d'enregistrements :

Enregistrement Description Octets d'adresse Séquence de données
S0 En-tête de bloc 2 Oui
S1 Séquence de données 2 Oui
S2 Séquence de données 3 Oui
S3 Séquence de données 4 Oui
S5 Nombre d'enregistrements 2 Non
S7 Fin de bloc 4 Non
S8 Fin de bloc 3 Non
S9 Fin de bloc 2 Non

L'enregistrement S0 contient des données spécifiques à un constructeurs plutôt que des données binaires. Le nombre d'enregistrements contenu dans S5 se trouve dans le champ d'adresse de deux octets. Le champ d'adresse de S7, S8, or S9 peut contenir l'adresse de départ du programme[2].

Exemple[modifier | modifier le code]

S00F000068656C6C6F202020202000003C
S11F00007C0802A6900100049421FFF07C6C1B787C8C23783C6000003863000026
S11F001C4BFFFFE5398000007D83637880010014382100107C0803A64E800020E9
S111003848656C6C6F20776F726C642E0A0042
S5030003F9
S9030000FC
  •      Code de départ
  •      Type d'enregistrement
  •      Nombre d'octets
  •      Adresse
  •      Données
  •      Somme de contrôle

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

  1. (en) srec − Motorola S−record record and file format (Linux man page)
  2. (en) MC68000 Family Programmer’s Reference Manual Appendix C

Liens externes[modifier | modifier le code]

  • SRecord is a collection of tools for manipulating SREC format files