Vad är filformatet HEX?
Filer med filtillägget .hex använder Intel HEX-formatet - ett textbaserat ASCII-postformat som kodar kompilerad binär firmware så att den kan överföras tillförlitligt till en programmerare eller ett flash-verktyg. Istället för att lagra rå binärdata representeras varje byte av innehåll som två hexadecimala tecken, vilket gör filen helt läsbar för människor i valfri textredigerare.
.hex-filer är alltid vanlig text och kan öppnas med en standardtextredigerare som Notepad. För att flasha firmware till en mikrokontroller används specialiserade verktyg som avrdude eller Arduino IDE. Där rå maskinkod behövs istället kan en kompilator även generera en binär .bin-avbildning, eller en Motorola S-record .srec för system som föredrar det formatet.
En .hex-fil är resultatet av att en kompilator eller assembler konverterar källkod till maskinkod och sedan kodar den för säker överföring till målenheten.
Var .hex-filer används
Data i .hex-filer används för att programmera mikrokontroller och för att skriva innehåll till inbyggda minnen som EEPROM och Flash-lagring. Mikrokontroller finns i många vanliga enheter - från fjärrkontroller och system som styr en bilmotor till moderna IoT-sensorer och robotikmaskinvara.
Struktur för data i .hex-filer
Hexadecimal data i en .hex-fil lagras i textrader som kallas poster (records), och varje post består av sex fält:
- Startkod - ett kolon (
:) som markerar början på varje post - Byteantal - två hex-siffror som definierar antalet databytes i den posten
- Adress - fyra hex-siffror som anger den 16-bitars destinationsadressen (adresserar upp till 64 KB per segment i basformatet)
- Posttyp - två hex-siffror, från
00till05(till exempel00= datapost,01= filslut) - Data - själva nyttolasten, där varje byte är kodad som två hexadecimala tecken
- Kontrollsumma - två hex-siffror som innehåller tvåkomplements-kontrollsumman för alla föregående bytes i posten
Den sista raden i varje giltig Intel HEX-fil är den fasta filslutsposten :00000001FF.
Säkerhet & trygghet
RISK: MEDIUMEn .hex-fil är ren data och kan inte köras på din PC av sig själv, så att öppna en i en text- eller hex-redigerare är ofarligt. Den verkliga risken finns på enheten: att flasha firmware som man inte litar på kan förstöra maskinvaran («bricka») eller ladda skadlig kod på en mikrokontroller. Flasha endast .hex-filer från enhetens tillverkare eller en källa du litar på, och bekräfta att filen matchar exakt ditt kort/chip innan uppladdning. Att redigera firmware-bytes manuellt kan också korrumpera avbildningen.
Formatdetaljer
i ett nötskal- Generisk hex-dump - En läsbar utskrift av en annan fils råa bytes (offset + hex + ASCII-kolumner) skapad av en hex-redigerare eller verktyg som xxd/hexdump; ibland sparas även råa binära objekt löst som .hex.
Program som öppnar HEX-filer
Tekniska detaljer
djup specifikation| Kodning | Ren ASCII-text; varje databyte representeras av två hexadecimala tecken |
| Starttecken för post | Kolon `:` (0x3A) - varje postrad börjar med detta tecken; det finns inget binärt magiskt nummer |
| Posttyper | Sex typer numrerade 00-05: data (00), filslut (01), utökad segmentadress (02), startsegmentadress (03), utökad linjär adress (04), startlinjär adress (05) |
| Basadressintervall | 16-bitars adressering per segment, täcker upp till 64 KB utan poster för adressutökning |
| Utökat adressintervall | Upp till 4 GB (32-bitar) med typ-04-poster för utökad linjär adress, vilket möjliggör full 32-bitars minnesmappning |
| Max antal databytes per post | Upp till 255 bytes (0xFF) data per post; vanlig praxis är 16 eller 32 bytes per post |
| Algoritm för kontrollsumma | 8-bitars tvåkomplement av alla bytes i posten (byteantal, adress, posttyp och data), exklusive startkolon |
| Markör för filslut | Den fasta posten `:00000001FF` måste avsluta varje giltig Intel HEX-fil |
| MIME-typ | text/plain |
| Byterordning för adress | Big-endian - mest signifikanta byten först i adress- och multibyte-fält |
| Primär användning | Programmering av Flash och EEPROM på mikrokontroller som familjerna AVR, PIC, ARM Cortex-M och 8051 |
| Verktygskedjans ursprung | Utdata från kompilatorer och assemblers inklusive avr-gcc, MPLAB X IDE, Keil MDK och IAR Embedded Workbench |
| Filstorleks-overhead | Ungefär 1,4-2× den råa binära storleken, eftersom varje byte data blir två ASCII-tecken plus inramningsbytes per post |
| Släppt | 1973 (Intel HEX format) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | en.wikipedia.org |
HEX-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om HEX-filer.