Intel HEX Dosya Formatı Nedir? Kayıt Yapısı, Adresleme ve Örnekler
Kısa açıklama: Intel HEX, mikrodenetleyici ve diğer programlanabilir elektronik cihazların belleğine yazılacak program kodlarını ve verileri metin tabanlı olarak saklayan bir dosya formatıdır. Bu makalede Intel HEX kayıt yapısı, adresleme yöntemleri, kayıt türleri ve checksum hesaplaması örneklerle açıklanmaktadır.Etiketler: Intel HEX, HEX dosya formatı, Intel HEX kayıtları, mikrodenetleyici programlama, PIC programlama, firmware, HEX checksum, EEPROM programlama, flash bellek, programlayıcı
## 1. Intel HEX Dosya Formatı Nedir?
Intel HEX, ASCII karakterlerinden oluşan ve satır satır düzenlenmiş bir metin dosyası formatıdır. Her satır, Intel HEX formatına uygun bir kayıt (record) içerir.
Bu kayıtlarda yer alan onaltılık (hexadecimal) sayılar, makine kodlarını ve sabit verileri temsil eder. Intel HEX dosyaları, ROM, EPROM, EEPROM veya flash bellek gibi programlanabilir belleklerde saklanacak program ve verilerin aktarılması amacıyla kullanılır.
Birçok mikrodenetleyici programlayıcısı ve bellek programlama cihazı Intel HEX dosyalarını okuyabilir.
Intel HEX dosyaları; PIC, 8051, ARM ve benzeri mikrodenetleyici ailelerinde kullanılan yazılım geliştirme araçlarının ürettiği yaygın çıktı formatlarından biridir.
## 2. Intel HEX Kayıt Yapısı
Bir Intel HEX dosyası, bir veya daha fazla HEX kaydından oluşur. Her kayıt belirli alanlara ayrılmıştır.
Temel kayıt biçimi şöyledir:
Kod:
CC
Burada her alanın anlamı aşağıdaki gibidir:
| Alan | Açıklama |
|---|---|
| : | Her HEX kaydının başlangıcında bulunan iki nokta işareti. |
| LL | Veri uzunluğu. Kayıtta bulunan veri baytlarının sayısını belirtir. |
| AAAA | Adres alanı. Veri baytlarının bellekte başlayacağı adresi belirtir. |
| TT | Kayıt türü. Kaydın veri, dosya sonu veya adres bilgisi içerdiğini belirtir. |
| DD | Veri alanı. Bir veya daha fazla baytlık makine kodu veya veri içerir. |
| CC | Checksum (kontrol toplamı). Kaydın doğruluğunu kontrol etmek için kullanılır. |
Her iki hexadecimal karakter bir baytı temsil eder. Örneğin, 10 hexadecimal değeri 16 bayta karşılık gelir.
## 3. Intel HEX Kayıt Türleri
Intel HEX formatında kullanılan temel kayıt türleri şunlardır:
| Kayıt türü | Açıklama |
|---|---|
| 00 | Veri kaydı (Data Record). Belleğe yazılacak verileri içerir. |
| 01 | |
| 02 | Genişletilmiş segment adres kaydı (Extended Segment Address). Bellek adresinin üst bölümünü belirtir. |
| 04 | Genişletilmiş doğrusal adres kaydı (Extended Linear Address). 32 bit adreslemenin üst 16 bitini belirtir. |
| 05 | Başlangıç doğrusal adres kaydı (Start Linear Address). Uygulamanın başlangıç adresini belirtir. Bazı araçlar tarafından kullanılır. |
[TD>Dosya sonu kaydı (End of File). HEX dosyasının tamamlandığını belirtir.[/TD]
## 4. Veri Kayıtları (Data Records)
Intel HEX dosyasında program kodları ve veriler genellikle 00 türündeki kayıtlarla aktarılır.
Örnek bir veri kaydı:
Kod:
:10246200464C5549442050524F46494C4500464C33
Bu kayıt aşağıdaki şekilde ayrıştırılır:
| Alan | Değer | Anlamı |
|---|---|---|
| LL | 10 | 16 bayt veri bulunur. |
| AAAA | 2462 | Verinin başlangıç adresidir. |
| TT | 00 | Veri kaydıdır. |
| DD | 464C...464C | Belleğe yazılacak veri baytlarıdır. |
| CC | 33 | Checksum değeridir. |
Veri kayıtlarında adres alanı, kaydın ilk veri baytının adresini belirtir. Sonraki baytlar bellekte artan adreslere yerleştirilir.
Her kayıt bir satırda bulunur. Dosyada birden fazla veri kaydı varsa bunlar farklı adreslere karşılık gelebilir.
## 5. Checksum (Kontrol Toplamı) Nasıl Hesaplanır?
Checksum, Intel HEX kaydındaki verilerin aktarım sırasında bozulup bozulmadığını kontrol etmek için kullanılır.
Hesaplama yöntemi şöyledir:
- Kayıttaki LL, AAAA, TT ve DD alanlarının bütün baytları toplanır.
- Toplamın en düşük 8 biti alınır. Başka bir ifadeyle toplam 256'ya göre mod işlemi uygulanır.
- Elde edilen değerin ikiye tümleyeni alınır. Bu değer CC checksum alanıdır.
Örneğin, aşağıdaki dosya sonu kaydında:
Kod:
:00000001FF
Baytların toplamı:
Kod:
00 + 00 + 00 + 01 = 01
01 değerinin ikiye tümleyeni FF olduğundan checksum FF olur.
Bir HEX kaydının geçerli olması için, checksum baytı da dâhil olmak üzere kayıttaki bütün baytların toplamının en düşük 8 biti sıfır olmalıdır.
## 6. Genişletilmiş Doğrusal Adres Kayıtları (Extended Linear Address – HEX386)
Genişletilmiş doğrusal adres kayıtları, 32 bit bellek adreslemesini desteklemek için kullanılır. Bu kayıtlar, veri adresinin üst 16 bitini içerir.
Kayıt türü 04 olarak belirtilir ve kayıt her zaman iki veri baytı içerir.
Örnek:
Kod:
:02000004FFFFFC
Kaydın alanları:
| Alan | Değer |
|---|---|
| LL | 02 |
| AAAA | 0000 |
| TT | 04 |
| DD | FFFF |
| CC | FC |
Bu kayıttaki FFFF, sonraki veri kayıtlarının adresine eklenecek üst 16 bit değerini belirtir.
Genişletilmiş doğrusal adres bilgisi, yeni bir 04 kaydı okunana kadar sonraki veri kayıtları için geçerliliğini korur.
Bir veri kaydının gerçek adresi aşağıdaki şekilde hesaplanır:
Kod:
Gerçek adres = (Üst adres << 16) + Veri kaydının adresi
Örneğin, veri kaydının adresi 2462, genişletilmiş doğrusal adres değeri FFFF ise:
Kod:
Veri kaydı adresi 2462
Üst adres FFFF
--------
Gerçek bellek adresi FFFF2462
## 7. Genişletilmiş Segment Adres Kayıtları (Extended Segment Address – HEX86)
Genişletilmiş segment adres kayıtları, 20 bit adresleme yönteminde kullanılır. Bu kayıtlar, adresin 4 ile 19 arasındaki bitlerini temsil eden segment değerini içerir.
Kayıt türü 02'dir ve iki veri baytı içerir.
Örnek:
Kod:
:020000021200EA
Kayıttaki 1200 değeri segment adresidir. Gerçek bellek adresi, segment değerinin 4 bit sola kaydırılması ve veri kaydının adresinin eklenmesiyle elde edilir.
Kod:
Gerçek adres = (Segment adresi << 4) + Veri kaydının adresi
Örneğin, veri kaydının adresi 2462 ve segment değeri 1200 ise:
Kod:
Veri kaydı adresi 2462
Segment adresi 1200
--------
Gerçek bellek adresi 14462
Segment adresi de yeni bir 02 kaydı gelene kadar sonraki veri kayıtları için geçerli kalır.
## 8. Başlangıç Doğrusal Adres Kaydı (Start Linear Address)
Kayıt türü 05 olan başlangıç doğrusal adres kaydı, uygulamanın başlangıç adresini belirtir. Dört veri baytı içerir ve 32 bit başlangıç adresini tanımlar.
Örnek:
Kod:
:04000005000000CD2A
Bu kayıtta:
- 04: Veri uzunluğu, 4 bayt.
- 0000: Adres alanı.
- 05: Kayıt türü.
- 000000CD: Uygulamanın başlangıç adresi.
- 2A: Checksum.
## 9. Dosya Sonu Kaydı (End-of-File – EOF)
Intel HEX dosyasının sonunda mutlaka bir dosya sonu kaydı bulunmalıdır. Bu kayıt türü 01 olarak belirtilir.
Standart EOF kaydı şöyledir:
Kod:
:00000001FF
Bu kayıtta veri uzunluğu sıfırdır. Adres alanı kullanılmaz ve checksum değeri FF olur.
## 10. Örnek Intel HEX Dosyası
Aşağıda bir Intel HEX dosyasına ait örnek kayıtlar verilmiştir:
Kod:
:10001300AC12AD13AE10AF1112002F8E0E8F0F2244
:10000300E50B250DF509E50A350CF5081200132259
:03000000020023D8
:0C002300787FE4F6D8FD7581130200031D
:10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016
:04003F00A42EFE22CB
:00000001FF
Bu dosyada veri kayıtları, program kodlarını ve belleğe yazılacak değerleri içerir. Son satırdaki EOF kaydı dosyanın tamamlandığını bildirir.
Intel HEX dosyası, doğrudan okunabilir bir programlama dili değildir. İçindeki hexadecimal veriler, hedef mikrodenetleyicinin komutlarına veya belleğe yerleştirilecek verilere karşılık gelir.
## 11. Intel HEX Dosyaları ve Mikrodenetleyici Programlama
Mikrodenetleyici yazılımı derlendiğinde, derleyici veya geliştirme ortamı çoğunlukla HEX formatında bir çıktı oluşturabilir. Programlayıcı bu dosyayı okuyarak hedef cihazın program belleğine gerekli verileri aktarır.
Ancak her HEX dosyasının her mikrodenetleyiciye uygun olduğu düşünülmemelidir. Dosyanın doğru cihaza, doğru bellek adreslerine ve uygun yapılandırma ayarlarına sahip olması gerekir.
Özellikle PIC mikrodenetleyicilerinde HEX dosyasının program belleği, konfigürasyon bitleri ve hedef cihazla uyumluluğu kontrol edilmelidir.
## Konuya Sonradan Eklenecek Bilgiler
Bu konu ilerleyen mesajlarda aşağıdaki başlıklarla genişletilebilir:
- HEX dosyasının içeriğini görüntüleme ve inceleme
- HEX dosyasını BIN dosyasına dönüştürme
- Checksum hesaplama ve HEX kayıtlarını doğrulama
- PIC mikrodenetleyicilerinde HEX dosyası ve konfigürasyon bitleri
- Programlayıcıda HEX dosyası yükleme ve doğrulama hataları
Eklentiler
Son düzenleme: