Hva er HEX-filformatet?
Filer med filendelsen .hex bruker Intel HEX-formatet - et tekstbasert ASCII-format som koder kompilert binær fastvare slik at den kan overføres pålitelig til en programmerer eller et flash-verktøy. I stedet for å lagre rå binærdata, representeres hver byte med innhold som to heksadesimale tegn, noe som gjør filen fullstendig lesbar for mennesker i et hvilket som helst tekstredigeringsprogram.
.hex-filer er alltid ren tekst og kan åpnes med et standard tekstredigeringsprogram som Notepad. For å overføre fastvaren til en mikrokontroller brukes spesialiserte verktøy som avrdude eller Arduino IDE. Der det i stedet er behov for rå maskinkode, kan en kompilator også generere et binært .bin-bilde, eller en Motorola S-record .srec for systemer som foretrekker det formatet.
En .hex-fil er resultatet av at en kompilator eller assembler konverterer kildekode til maskinkode og deretter koder den for sikker overføring til målenheten.
Hvor .hex-filer brukes
Data i .hex-filer brukes til å programmere mikrokontrollere og til å skrive innhold til innebygde minner som EEPROM og Flash-lagring. Mikrokontrollere er installert i mange vanlige enheter - fra fjernkontroller og systemer som styrer en bilmotor til moderne IoT-sensorer og robotikk.
Struktur på data i .hex-filer
Heksadesimal data i en .hex-fil lagres i tekstlinjer kalt «records», og hver record består av seks felt:
- Startkode - et kolon (
:) som markerer begynnelsen på hver record - Byte-antall - to heksadesimale sifre som definerer antall databytes i den recorden
- Adresse - fire heksadesimale sifre som spesifiserer den 16-biters destinasjonsadressen (adresserer opptil 64 KB per segment i grunnformatet)
- Record-type - to heksadesimale sifre, fra
00til05(for eksempel00= datarecord,01= filslutt) - Data - selve innholdet, der hver byte er kodet som to heksadesimale tegn
- Sjekksum - to heksadesimale sifre som inneholder toerkomplement-sjekksummen av alle foregående bytes i recorden
Den siste linjen i enhver gyldig Intel HEX-fil er den faste filslutt-recorden :00000001FF.
Sikkerhet og trygghet
RISIKO: MEDIUMEn .hex-fil er rene data og kan ikke kjøres på PC-en din i seg selv, så det er ufarlig å åpne en i et tekst- eller heks-redigeringsprogram. Den reelle risikoen ligger på enheten: flashing av upålitelig fastvare kan ødelegge maskinvaren («bricke») eller laste ondsinnet kode på en mikrokontroller. Flash kun .hex-filer fra enhetens produsent eller en kilde du stoler på, og bekreft at filen samsvarer nøyaktig med ditt kort/brikke før opplasting. Manuell redigering av fastvare-bytes kan også korrumpere bildet.
Formatdetaljer
i et nøtteskall- Generisk hex-dump - En menneskelig lesbar utskrift av en annen fils rå bytes (offset + heks + ASCII-kolonner) produsert av en heks-editor eller verktøy som xxd/hexdump; noen ganger blir rå binærdata også løst lagret som .hex.
Programmer som åpner HEX-filer
Tekniske detaljer
dyp spesifikasjon| Koding | Ren ASCII-tekst; hver databyte er representert som to heksadesimale tegn |
| Starttegn for record | Kolon `:` (0x3A) - hver record-linje begynner med dette tegnet; det finnes ingen binær signatur |
| Record-typer | Seks typer nummerert 00-05: data (00), filslutt (01), utvidet segmentadresse (02), startsegmentadresse (03), utvidet lineær adresse (04), start lineær adresse (05) |
| Basis adresseområde | 16-biters adressering per segment, som dekker opptil 64 KB uten records for adresseutvidelse |
| Utvidet adresseområde | Opptil 4 GB (32-bit) ved bruk av type-04 Extended Linear Address-records, som muliggjør full 32-biters minnekartlegging |
| Maks databytes per record | Opptil 255 bytes (0xFF) data per record; vanlig praksis er 16 eller 32 bytes per record |
| Sjekksum-algoritme | 8-biters toerkomplement av alle bytes i recorden (byte-antall, adresse, record-type og data), ekskludert startkolon |
| Filslutt-markør | Den faste recorden `:00000001FF` må avslutte enhver gyldig Intel HEX-fil |
| MIME-type | text/plain |
| Adresse-byterekkefølge | Big-endian - mest signifikante byte først i adresse- og multibyte-antallfelt |
| Primærbruk | Programmering av Flash og EEPROM på mikrokontrollere som AVR, PIC, ARM Cortex-M og 8051-familier |
| Opprinnelse i verktøykjede | Utdata fra kompilatorer og assemblere inkludert avr-gcc, MPLAB X IDE, Keil MDK og IAR Embedded Workbench |
| Filstørrelse-overhead | Omtrent 1,4-2× den rå binærstørrelsen, ettersom hver byte med data blir to ASCII-tegn pluss innrammingsbytes per record |
| Utgitt | 1973 (Intel HEX format) |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | en.wikipedia.org |
HEX-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om HEX-filer.