Intel HEX – format pliku zawierający dane binarne, stosowany przy programowaniu mikrokontrolerów - systemów wbudowanych, pamięci EEPROM, FLASH. Jest najstarszym tego typu formatem, stosowanym od lat 70. XX wieku.

Dane w postaci hexadecymalnej zapisane są w liniach w postaci tekstowej.Każda z linii zawiera 6 pól: Znacznik rozpoczynający, jeden znak ASCII - dwukropek ':', Liczba bajtów, dwie cyfry hexadecymalne, określające długość rekordu danych, Adres, cztery cyfry hexadecymalne, 16 bitowy adres, umożliwiający zaadresowanie do 64K pamięci w jednym segmencie (zapisany w formacie Big Endian) Typ rekordu, dwie cyfry hexadecymalne w przedziale od 00 do 05, Dane, sekwencja danych, gdzie bajt zapisany jest w hexadecymalnej postaci tekstowej, Suma kontrolna, dwie cyfry hexadecymalne, suma kontrolna rekordu - cały rekord poza ':'.

Przykład obliczenia sumy kontrolnej dla wartości rekordu: 0300300002337A1E

03 + 00 + 30 + 00 + 02 + 33 + 7A = E2, po uzupełnieniu do dwóch (U2) otrzymujemy - 1E (w systemie szesnastkowym: 100 - E2 = 1E). Innymi słowy najmniej znaczący bajt sumy wszystkich bajtów w jednym rekordzie musi wynosić 0.

03 + 00 + 30 + 00 + 02 + 33 + 7A + 1E = 100, najmniej znaczący bajt jest równy 0.

Typ rekordu Istnieje sześć różnych typów rekordów: 00, rekord zawierający dane oraz 16 bitowy adres, 01, koniec pliku, ostatni rekord, 02, rekord adresu segmentu rozszerzonego (20 bitów adresu), używany do adresowania do 1MB (pole adresowe jest równe 0000, w danych umieszczony jest 2 bajtowy adres zapisany w kolejności big endian, który pomnożony przez 2^4 dodawany jest do adresów rekordów typu 00 następujących po nim) 03, rekord ustawiający 20 bitowy adres, spod którego rozpocznie się wykonywanie kodu. Zawiera on parę rejestrów CS (pierwsze 2 bajty danych) i IP (2 pozostałe bajty). Może zostać użyty tylko w trybie rzeczywistym. Jeżeli adres nie zostanie podany, wykonanie kodu rozpocznie się od domyślnego adresu. 04, rekord adresu segmentu rozszerzonego (32 bity adresu), używany do adresowania do 4GB (podobnie do 02 lecz 2 bajtowy adres z pola danych mnożony jest przez 2^16) 05, rekord ustawiający 32 bitowy adres liniowy, spod którego rozpocznie się wykonywanie kodu (Rejestr EIP). Może zostać użyty tylko w trybie chronionym. Jeżeli adres nie zostanie podany, wykonanie kodu rozpocznie się od domyślnego adresu.

Przykład :10010000214601360121470136007EFE09D2190140 :100110002146017EB7C20001FF5F16002148011988 :10012000194E79234623965778239EDA3F01B2CAA7 :100130003F0156702B5E712B722B732146013421C7 :00000001FF

Bibliografia

Kategoria:Formaty plików komputerowych