Qu'est-ce que le format de fichier HEX ?
Les fichiers avec l'extension .hex utilisent le format Intel HEX - un format d'enregistrement ASCII en texte brut qui encode le micrologiciel binaire compilé afin qu'il puisse être transféré de manière fiable vers un programmateur ou un outil de flashage. Plutôt que de stocker des données binaires brutes, chaque octet de contenu est représenté par deux caractères hexadécimaux, ce qui permet au fichier de rester entièrement lisible par l'homme dans n'importe quel éditeur de texte.
Les fichiers .hex sont toujours en texte brut et peuvent être ouverts avec un éditeur de texte standard tel que Notepad. Pour flasher le micrologiciel sur un microcontrôleur, des outils spécialisés tels que avrdude ou Arduino IDE sont utilisés. Lorsqu'un code machine brut est nécessaire à la place, un compilateur peut également générer une image binaire .bin, ou un Motorola S-record .srec pour les systèmes qui préfèrent ce format.
Un fichier .hex est le résultat d'un compilateur ou d'un assembleur convertissant le code source en code machine, puis l'encodant pour un transfert sécurisé vers l'appareil cible.
Où les fichiers .hex sont utilisés
Les données contenues dans les fichiers .hex sont utilisées pour programmer les microcontrôleurs et pour écrire du contenu dans les mémoires embarquées telles que l'EEPROM et le stockage Flash. Les microcontrôleurs sont installés dans de nombreux appareils couramment utilisés - des télécommandes et systèmes de contrôle d'un moteur de voiture aux capteurs IoT modernes et au matériel robotique.
Structure des données dans les fichiers .hex
Les données hexadécimales d'un fichier .hex sont stockées dans des lignes de texte appelées enregistrements, et chaque enregistrement se compose de six champs :
- Code de départ - un deux-points (
:) qui marque le début de chaque enregistrement - Nombre d'octets - deux chiffres hexadécimaux définissant le nombre d'octets de données dans cet enregistrement
- Adresse - quatre chiffres hexadécimaux spécifiant l'adresse de destination sur 16 bits (adressage jusqu'à 64 Ko par segment dans le format de base)
- Type d'enregistrement - deux chiffres hexadécimaux, de
00à05(par exemple,00= enregistrement de données,01= fin de fichier) - Données - la charge utile réelle, chaque octet étant encodé sous la forme de deux caractères hexadécimaux
- Somme de contrôle (Checksum) - deux chiffres hexadécimaux contenant le complément à deux de la somme de tous les octets précédents de l'enregistrement
La dernière ligne de tout fichier Intel HEX valide est l'enregistrement de fin de fichier fixe :00000001FF.
Sécurité et sûreté
RISQUE : MEDIUMUn fichier .hex contient des données brutes et ne peut pas s'exécuter seul sur votre PC, donc l'ouvrir dans un éditeur de texte ou hexadécimal est sans danger. Le risque réel se situe sur l'appareil : flasher un micrologiciel non fiable peut bloquer (bricker) le matériel ou charger un code malveillant sur un microcontrôleur. Ne flashez que des fichiers .hex provenant du fournisseur de l'appareil ou d'une source de confiance, et confirmez que le fichier correspond exactement à votre carte/puce avant le téléversement. Modifier les octets du micrologiciel à la main peut également corrompre l'image.
Détails du format
en bref- Dump hexadécimal générique - Une transcription lisible par l'homme des octets bruts d'un autre fichier (colonnes offset + hex + ASCII) produite par un éditeur hexadécimal ou des outils comme xxd/hexdump ; parfois, des blocs binaires bruts sont également enregistrés de manière informelle sous l'extension .hex.
Programmes qui ouvrent les fichiers HEX
Détails techniques
spécifications approfondies| Encodage | Texte ASCII pur ; chaque octet de données est représenté par deux caractères hexadécimaux |
| Caractère de début d'enregistrement | Deux-points `:` (0x3A) - chaque ligne d'enregistrement commence par ce caractère ; il n'y a pas de nombre magique binaire |
| Types d'enregistrement | Six types numérotés de 00 à 05 : données (00), fin de fichier (01), adresse de segment étendue (02), adresse de segment de départ (03), adresse linéaire étendue (04), adresse linéaire de départ (05) |
| Plage d'adresses de base | Adressage 16 bits par segment, couvrant jusqu'à 64 Ko sans enregistrements d'extension d'adresse |
| Plage d'adresses étendue | Jusqu'à 4 Go (32 bits) en utilisant les enregistrements d'adresse linéaire étendue de type 04, permettant un mappage mémoire complet sur 32 bits |
| Octets de données max par enregistrement | Jusqu'à 255 octets (0xFF) de données par enregistrement ; la pratique courante utilise 16 ou 32 octets par enregistrement |
| Algorithme de somme de contrôle | Complément à deux sur 8 bits de tous les octets de l'enregistrement (nombre d'octets, adresse, type d'enregistrement et données), à l'exclusion du deux-points initial |
| Marqueur de fin de fichier | L'enregistrement fixe `:00000001FF` doit terminer tout fichier Intel HEX valide |
| Type MIME | text/plain |
| Ordre des octets d'adresse | Big-endian - l'octet le plus significatif en premier dans les champs d'adresse et de comptage multi-octets |
| Utilisation principale | Programmation de Flash et d'EEPROM sur des microcontrôleurs tels que les familles AVR, PIC, ARM Cortex-M et 8051 |
| Origine de la chaîne d'outils | Sortie de compilateurs et d'assembleurs incluant avr-gcc, MPLAB X IDE, Keil MDK et IAR Embedded Workbench |
| Surcoût de taille de fichier | Environ 1,4 à 2 fois la taille du binaire brut, car chaque octet de données devient deux caractères ASCII plus les octets d'encadrement par enregistrement |
| Publié | 1973 (Intel HEX format) |
| Standard ouvert | Oui · libre de droits |
| Spécification | en.wikipedia.org |
Conversions HEX
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers HEX.