Hvad er HEX-filformatet?
Filer med filtypenavnet .hex bruger Intel HEX-formatet - et ASCII-postformat i almindelig tekst, der koder kompileret binær firmware, så den pålideligt kan overføres til en programmør eller et flash-værktøj. I stedet for at gemme rå binære data repræsenteres hver byte af indholdet som to hexadecimale tegn, hvilket holder filen fuldt læsbar for mennesker i ethvert tekstredigeringsprogram.
.hex-filer er altid almindelig tekst og kan åbnes med et standard tekstredigeringsprogram som f.eks. Notesblok. For at flashe firmwaren til en mikrocontroller bruges specialiserede værktøjer som avrdude eller Arduino IDE. Hvor der i stedet er brug for rå maskinkode, kan en compiler også generere et binært .bin-billede eller en Motorola S-record .srec til systemer, der foretrækker det format.
En .hex-fil er resultatet af, at en compiler eller assembler konverterer kildekode til maskinkode og derefter koder den til sikker overførsel til målenheden.
Hvor .hex-filer bruges
Data indeholdt i .hex-filer bruges til at programmere mikrocontrollere og til at skrive indhold i indlejrede hukommelser som EEPROM og Flash-lagring. Mikrocontrollere er installeret i mange almindeligt anvendte enheder - fra fjernbetjeninger og systemer, der styrer en bilmotor, til moderne IoT-sensorer og robot-hardware.
Struktur af data i .hex-filer
Hexadecimale data i en .hex-fil gemmes i tekstlinjer kaldet poster (records), og hver post består af seks felter:
- Startkode - et kolon (
:) der markerer begyndelsen af hver post - Byte-antal - to hex-cifre, der definerer antallet af databytes i den post
- Adresse - fire hex-cifre, der angiver den 16-bit destinationsadresse (adressering op til 64 KB pr. segment i basisformatet)
- Posttype - to hex-cifre, fra
00til05(f.eks.00= datapost,01= filafslutning) - Data - selve nyttelasten, hvor hver byte er kodet som to hexadecimale tegn
- Kontrolsum - to hex-cifre, der indeholder to-komplement-kontrolsummen af alle foregående bytes i posten
Den sidste linje i enhver gyldig Intel HEX-fil er den faste filafslutningspost :00000001FF.
Sikkerhed og tryghed
RISIKO: MEDIUMEn .hex-fil er rene data og kan ikke køre på din PC af sig selv, så det er ufarligt at åbne en i et tekst- eller hex-redigeringsprogram. Den reelle risiko ligger på enheden: flashing af firmware, man ikke har tillid til, kan ødelægge hardwaren (brick) eller indlæse ondsindet kode på en mikrocontroller. Flash kun .hex-filer fra enhedens producent eller en kilde, du har tillid til, og bekræft, at filen passer til dit præcise kort/chip før upload. Manuel redigering af firmware-bytes kan også korrumpere billedet.
Formatdetaljer
kort fortalt- Generisk hex-dump - En menneskeligt læsbar udskrift af en anden fils rå bytes (offset + hex + ASCII-kolonner) produceret af en hex-editor eller værktøjer som xxd/hexdump; nogle gange gemmes rå binære blobs også løst som .hex.
Programmer der åbner HEX-filer
Tekniske detaljer
dyb specifikation| Kodning | Ren ASCII-tekst; hver databyte er repræsenteret som to hexadecimale tegn |
| Starttegn for post | Kolon `:` (0x3A) - hver postlinje begynder med dette tegn; der er intet binært magisk nummer |
| Posttyper | Seks typer nummereret 00-05: data (00), filafslutning (01), udvidet segmentadresse (02), startsegmentadresse (03), udvidet lineær adresse (04), startlineær adresse (05) |
| Basisadresseområde | 16-bit adressering pr. segment, der dækker op til 64 KB uden poster for adresseudvidelse |
| Udvidet adresseområde | Op til 4 GB (32-bit) ved brug af type-04 Extended Linear Address-poster, hvilket muliggør fuld 32-bit hukommelsesmapping |
| Maks. databytes pr. post | Op til 255 bytes (0xFF) data pr. post; almindelig praksis bruger 16 eller 32 bytes pr. post |
| Kontrolsum-algoritme | 8-bit to-komplement af alle bytes i posten (byte-antal, adresse, posttype og data), undtagen startkolon |
| Filafslutningsmarkør | Fast post `:00000001FF` skal afslutte enhver gyldig Intel HEX-fil |
| MIME-type | text/plain |
| Adresse-byte-rækkefølge | Big-endian - mest betydende byte først i adresse- og multibyte-antal-felter |
| Primær anvendelse | Programmering af Flash og EEPROM på mikrocontrollere som AVR, PIC, ARM Cortex-M og 8051-familier |
| Toolchain-oprindelse | Output fra compilere og assemblere herunder avr-gcc, MPLAB X IDE, Keil MDK og IAR Embedded Workbench |
| Filstørrelse-overhead | Cirka 1,4-2× den rå binære størrelse, da hver byte data bliver til to ASCII-tegn plus indramningsbytes pr. post |
| Udgivet | 1973 (Intel HEX format) |
| Åben standard | Ja · royaltyfri |
| Specifikation | en.wikipedia.org |
HEX-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om HEX-filer.