S-Record
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 :
- S, le caractère débutant l'enregistrement
- -, un chiffre de 0 à 9 définissant le type d'enregistrement.
- 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.
- 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.
- - - - - ..., une séquence de paires de chiffres hexadécimaux représentant les octets de données.
- 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]- HEX (Intel) - Format équivalent de chez Intel.
Références
[modifier | modifier le code]Liens externes
[modifier | modifier le code]- SRecord est une collection d'outils pour manipuler des fichiers au format S-Record.