Intel HEX

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 14 decembrie 2017; verificările necesită 23 de modificări .

Intel HEX  este un format de fișier conceput pentru a reprezenta date binare arbitrare sub formă de text. Din motive istorice, este standardul de facto pentru intermiterea diferitelor microcircuite cu memorie ( microcontrolere , ROM , EEPROM etc.). În consecință, majoritatea instrumentelor pentru pregătirea imaginilor firmware ( compilatoare , editori, vizualizatoare etc.) pot funcționa cu acest format.

Fișierul are de obicei extensia .hex. Numele I8HEX, I16HEX și I32HEX sunt uneori folosite pentru a identifica setul de înregistrări utilizate într-un fișier. I8HEX folosește doar intrări cu tipurile 00/01 (adresare pe 16 biți), I16HEX adaugă intrări 02/03 (adresare pe 20 de biți), iar I32HEX adaugă intrări 04/05 (adresare pe 32 biți).

Avantajul formatului (spre deosebire de binarul simplu) este capacitatea de a specifica doar anumite zone de adrese (cu precizie de octet ). Multe arhitecturi de microcontrolere au mai multe zone de programare cu lacune extinse de adresare între ele.

Format de înregistrare

Explicația unu

Fișierul este format din linii de text ASCII . Fiecare linie reprezintă o intrare. Fiecare intrare începe cu două puncte ( : ), urmate de un set de cifre hexazecimale care sunt multipli ai unui octet :

Explicația doi

Un fișier Intel HEX poate conține orice număr de intrări. Fiecare intrare este un șir ASCII format din mai multe perechi de cifre hexazecimale. Șirul trebuie să înceapă cu un caracter două puncte și să se termine cu o pereche de caractere CR și LF. Înregistrarea constă din cinci câmpuri în următorul format:

: LL AAAA TT DD… CC

Fiecare grup de litere (LL, AAAA, TT etc.) este un câmp separat. Fiecare literă este o cifră hexazecimală separată (4 biți). Fiecare câmp este format din cel puțin două cifre hexazecimale (un octet). Mai jos este o defalcare a câmpurilor de înregistrare:

Segmentul de introducere a adresei

Un fișier în format Intel HEX poate conține intrări pentru procesoarele Intel 8086 care definesc adresa segmentului (cu alte cuvinte, numărul paragrafului, un paragraf este de 16 octeți). Dacă este utilizată directiva H167, atunci acest tip de înregistrare înlocuiește înregistrarea de adresă liniară extinsă. Numărul de paragraf este utilizat ca decalaj de adresă pentru toate înregistrările de date care urmează acestei înregistrări. Offset-ul este deplasarea adresei de patru biți la stânga. De exemplu, un offset de 0x1234 ar da adresa reală 0x12340. Exemplu de înregistrare:

: 02 0000 02 1000 EC

Unde:

Introducerea adresei extinse

Când este utilizată directiva H167, fișierul în format Intel HEX va conține posibil intrări de adrese liniare extinse. Acest tip de intrare definește valorile celor mai semnificativi doi octeți ai adresei absolute (biții 16-31). Acești doi octeți cei mai importanți ai adresei vor fi utilizați ca compensare a adresei pentru toate înregistrările de date care urmează acestei înregistrări. Exemplu de înregistrare:

: 02 0000 04 00FF FB

Unde:

Înregistrare la sfârșitul fișierului

Fișierele în format Intel HEX trebuie să aibă o intrare End of File (EOF).

Exemplu de înregistrare:

: 00 0000 01FF _

Unde:

Exemple

Exemplul 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

     Începe înregistrarea      Numărul de octeți de date din această intrare (rând)      Adresa de la care încep să fie plasate datele acestei înregistrări      Tipul de înregistrare      Date      Înregistrați suma de control

Exemplul 2

Exemplu de înregistrare de date:

: 10 2462 00 464C5549442050524F46494C4500464C 33

Unde

Exemplul 3

:020000021000EC :10C20000E0A5E6F6FDFFE0AEE00FE6FCFDFFE6FD93 :10C21000FFFFF6F50EFE4B66F2FA0CFEF2F40EFE90 :10C22000F04EF05FF06CF07DCA0050C2F086F097DF :10C23000F04AF054BCF5204830592D02E018BB03F9 :020000020000FC :04000000FA00000200 :00000001FF

     Înregistrare cu adresa segmentului (tip de înregistrare 02). Cei 2 octeți de date conțin partea superioară a adresei.      Înregistrări cu date (tip de înregistrare 00).      O înregistrare care marchează sfârșitul unui fișier (tip de înregistrare 01). Rândurile după această intrare sunt ignorate.

Vezi și

Link -uri