Intel HEX
Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den
version , der blev gennemgået den 14. december 2017; checks kræver
23 redigeringer .
Intel HEX er et filformat designet til at repræsentere vilkårlige binære data i tekstform. Af historiske årsager er det de facto-standarden for flashing af forskellige mikrokredsløb med hukommelse ( mikrocontrollere , ROM , EEPROM osv.). Derfor kan de fleste værktøjer til at forberede firmwarebilleder ( kompilere , redaktører, seere osv.) arbejde med dette format.
Filen har normalt filtypenavnet .hex. Navnene I8HEX, I16HEX og I32HEX bruges nogle gange til at identificere det sæt af poster, der bruges i en fil. I8HEX bruger kun poster med typer 00/01 (16-bit adressering), I16HEX tilføjer poster 02/03 (20-bit adressering), og I32HEX tilføjer poster 04/05 (32-bit adressering).
Fordelen ved formatet (i modsætning til simpel binær) er muligheden for kun at angive bestemte adresseområder (med byte - nøjagtighed ). Mange mikrocontrollerarkitekturer har flere programmeringsområder med omfattende adresseringsgab mellem dem.
Optagelsesformat
Forklaring et
Filen består af ASCII -tekstlinjer . Hver linje repræsenterer én indgang. Hver post begynder med et kolon ( : ), efterfulgt af et sæt hexadecimale cifre , der er multipla af en byte :
- Optagelse starter ( : ).
- Antallet af bytes data indeholdt i denne post. Det optager en byte (to hexadecimale cifre), hvilket svarer til 0 ... 255 i decimal .
- Startadressen for den datablok, der skal skrives, er 2 bytes. Denne adresse definerer den absolutte placering af denne posts data i den binære fil.
- En byte, der angiver posttypen. Følgende registreringstyper er defineret:
- 0 - Indgangen indeholder binære fildata.
- 1 - record angiver slutningen af filen , indeholder ingen data. Den har den karakteristiske form ":00000001FF".
- 2 — indtastning af segmentadressen (for detaljer, se nedenfor).
- 4 - udvidet adresseindtastning (se nedenfor for detaljer).
- Bytes med data, der skal lagres i EPROM'en (deres antal er angivet i begyndelsen af posten, fra 0 til 255 bytes).
- Den sidste byte i indgangen er kontrolsummen . Det beregnes således, at summen af alle bytes i posten er lig med 0.
- Linjen slutter med et standard CR/LF-par (0Dh 0Ah).
Forklaring to
En Intel HEX-fil kan indeholde et vilkårligt antal poster. Hver post er en ASCII - streng bestående af flere par hexadecimale cifre. Strengen skal starte med et kolontegn og slutte med et par CR- og LF-tegn. Posten består af fem felter i følgende format:
: LL AAAA TT DD… CC
Hver gruppe af bogstaver (LL, AAAA, TT osv.) er et separat felt. Hvert bogstav er et separat hexadecimalt ciffer (4 bit). Hvert felt består af mindst to hexadecimale cifre (én byte). Nedenfor er en oversigt over rekordfelterne:
- : Hver indgang i Intel HEX-filen skal begynde med et kolon.
- LL Length felt - viser antallet af bytes data (DD) i posten.
- AAAA-adressefelt - Repræsenterer startadressen for posten.
- TT Type felt. Det kan tage følgende værdier:
- 00-indgangen indeholder binære fildata.
- 01 indtastning er slutningen af filen.
- 02 segmentadresseindtastning (se nedenfor for detaljer).
- 03 Startadresse for programstart i 80x86-format (værdier af CS:IP-registrene for programtælleren og offset-registret)
- 04 udvidet adresseindtastning (se nedenfor for detaljer).
- 05 32-bit programstartadresse i "lineært" adresserum
- DD Datafelt. En post kan indeholde flere bytes data. Antallet af databytes skal svare til LL-feltet.
- CC Checksum felt. Kontrolsum-feltet beregnes ved at tilføje værdierne af alle bytes (par af hexadecimale cifre) af posten modulo 256, efterfulgt af konvertering til et ekstra format (træk den resulterende værdi fra 0). Således, hvis du summerer alle par af hexadecimale tal, inklusive LL, AA, TT, DD, CC, får du 0.
Indtastning af segmentadresse
En fil i Intel HEX-format kan indeholde indgange til Intel 8086-processorer, der definerer segmentadressen (med andre ord afsnitsnummeret, et afsnit er 16 bytes). Hvis H167-direktivet anvendes, erstatter denne posttype den udvidede lineære adressepost. Paragrafnummeret bruges som adresseforskydning for alle dataposter efter denne post. Forskydningen er forskydningen af adressen fire bit til venstre. For eksempel vil en offset på 0x1234 give den rigtige adresse 0x12340. Eksempel på optagelse:
: 02 0000 02 1000 EC
hvor:
- 02 Antal databytes
- 0000 Er altid lig med 0000 i denne posttype
- 02 Record type 02 (segment adresse record).
- 1000 Afsnitsnummer (den rigtige adresse vil være 0x10000).
- EF kontrolsum
Udvidet adresseindtastning
Når H167-direktivet bruges, vil Intel HEX-formatfilen muligvis indeholde udvidede lineære adresseindtastninger. Denne indtastningstype definerer værdierne af de to mest signifikante bytes af den absolutte adresse (bit 16-31). Disse to mest signifikante bytes af adressen vil blive brugt som adresseforskydning for alle dataposter efter denne post. Eksempel på optagelse:
: 02 0000 04 00FF FB
hvor:
- 02 Antal databytes
- 0000 Altid 0
- 04 Record Type 04 (Udvidet lineær adressepost)
- 00FF Adresseforskydning højt ord (0x00FF0000)
- FB kontrolsum
Slutoptagelse af fil
Intel HEX-formatfiler skal have en End of File (EOF)-indgang.
Eksempel på optagelse:
: 00 0000 01FF _
hvor:
- 00 Antal bytes at skrive
- 0000 Feltet ignoreres. Det er lige meget, hvad der står der, men det er normalt altid 0
- 01 Record type 01 (Slut på fil)
- FF Checksum beregnet som 01h + IKKE(00h + 00h + 00h + 01h).
Eksempler
Eksempel 1
: 10 0100 00 214601360121470136007EFE09D21901 40
: 10 0110 00 2146017EB7C20001FF5F160021480119 88
: 10 0120 00 194E79234623965778239EDA3F01B2CA A7
: 10 0130 00 3F0156702B5E712B722B732146013421 C7
: 00 0000 01 FF
Start optagelsen
Antal bytes med data i denne post (række)
Den adresse, hvorfra dataene i denne post begynder at blive placeret
Record Type
Data
Registrer kontrolsum
Eksempel 2
Eksempel på en datapost:
: 10 2462 00 464C5549442050524F46494C4500464C 33
hvor
- 10 Antal databytes (16 bytes)
- 2462 Hukommelsesadresse, hvor indtastningen vil blive placeret.
- 00 Record type - data.
- 464C…464C Data
- 33 Skriv kontrolsum
Eksempel 3
:020000021000EC
:10C20000E0A5E6F6FDFFE0AEE00FE6FCFDFFE6FD93
:10C21000FFFFF6F50EFE4B66F2FA0CFEF2F40EFE90
:10C22000F04EF05FF06CF07DCA0050C2F086F097DF
:10C23000F04AF054BCF5204830592D02E018BB03F9
:020000020000FC
:04000000FA00000200
:00000001FF
Record med segmentadresse (recordtype 02). De 2 bytes med data indeholder den høje del af adressen.
Registrerer med data (recordtype 00).
En post, der markerer slutningen af en fil (posttype 01). Linjer efter denne indtastning ignoreres.
Se også
- SREC er et filformat, der bruges af Motorola
- ELF er et filformat, der bruges af de fleste UNIX-lignende systemer.
Links