Home > Mikrokontroler > Hex File

Hex File

January 9th, 2012

2012-01-09_162936Bagi dunia mikrokontroler, tentunya sudah tidak asing lagi hex file. Intel Hex File adalah text file yang diciptakan oleh kompiler Assembler, C, Basic atau yang lain (lihat postingan lain). Hex file adalah file yang dibaca oleh programmer dan kode-kode mesin-nya dimasukkan kedalam flash memory mikrokontroler. gambar 1 adalah format Hex file yang dibuat oleh kompiler MCS51, asm51.exe atau Mide (gambar kuning), yang bawah untuk penjelasannya ditambahi spasi-spasi. Lihat line 7: tanda ‘:’ adalah awal record line untuk Hex format, 10 adalah jumlah data dalam line tersebut, anda bisa hitung jumlah datanya adalah 10h = 16 decimal, 16 data, mulai 75 … 01, selanjutnya adalah 0000h adalah alamat dimana data diletakkan, artinya alamat 0000h isinya 75, 0001h isi 81 dst. Selanjutnya 00 adalah tipe record, 00 adalah data, 01 adalah akhir file, dan masih ada kode 02..05 (tak perlu dibahas).

1. Hex file

1. Hex file MCS51

2. Lst File MCS51

2. Lst File MCS51

Selanjutnya adalah data-data itu sendiri, mulai 75…01, byte terakhir adalah check-sum byte, artinya bahwa jika anda jumlahkan dari 10 00 00 00 75 81…..06, maka hasilnya akan 800h, pasti low byte nya 00, ini digunakan untuk cek ketika transmisi, jika jumlahnya tidak 00h, kemungkinan ada data yang salah.¬† Kode 75 81 2F adalah kode mesin untuk mov 20,#02fh dan seterusnya (lihat gambar 2), keterangan ini akan muncul pada file lst yang juga dihasilkan oleh compiler, terlihat bahwa setiap perintah, bisa memiliki panjang (byte) kode mesin yang berbeda, bisa 1, 2 atau 3 byte. Programmer dengan mikrokontroler yang pintar hanya akan menerima data dari komputer yang dikirimkan melalui semacam hyperterminal berupa rentetan data-data berupa karakter dari file hex tersebut, mikro akan mengaturnya dan menuliskannya dalam mikrokontroler target dengan aturan protokol pemrograman, sedangkan apabila hardware programmer-nya hanya berupa komponen pasif, maka yang pintar dan mengatur protokol pemrograman adalah program yang ada di PC.

Untuk AVR, kelihatannya mirip dengan MCS51, tetapi penempatan dalam memory flashnya berbeda, AVR memiliki low address dan high address. Setiap perintah dalam AVR memiliki panjang byte yang sama yaitu2 byte atau 1 word, jadi kalau mikrokontroler memiliki 8 kbyte, artinya memiliki 4 kword , jika semua perintah, tidak ada data constant dalam flashnya mampu menyimpan 4096 perintah. Gambar 3 memperlihatkan Hex File AVR.

avr_hex1

3. Hex file AVR

4. Lst file AVR

4. Lst file AVR

Pasangan byte yang membentuk word, dituliskan dalam hex file (lihat line 8 gambar 3) low byte lebih dahulu, contoh pada alamat 0000h -> 00C0, yang seharusnya dalam flash memory pada alamat 0000h isinya : C000 yang artinya rjmp reset (lompat ke alamat Reset 01h), hal ini dibuat demikian¬† karena pada proses pemrogramanya harus dituliskan data low byte lebih dahulu, baru high byte, kalau dalam hex file dibuat high byte dahulu, maka akan ada permasalahan dalam pembacaan data (harus di buffer). Perhatikan pada file lst di gambar 4, yang menggambarkan isi dari memory flash, alamat 0000h dan seterusnya berisi word-word kode mesin yang sama panjangnya untuk setiap perintah.¬† Lihat di gambar 3 line 9, dimana pada alamat 0010h berisi C19A, jika dibalik 9AC1, padahal di flash, harusnya kode ini berada dilokasi memory : 0008h, jadi pada proses pemrogramannya nilai alamat yang tercantum dalam hex file harus dikoreksi dengan membagi 2, 0010h : 2 = 0008h. Pemrograman pada AVR tipe S, dapat dilakukan seperti pada AT89S (kompatibelnya MCS51), dengan byte mode, artinya menuliskan alamat dahulu kemudian data (lihat cara pemrograman ISP), tetapi pada pemrograman AVR Mega, harus digunakan ‘page mode’. Satu ‘page’ adalah 32 byte, pertama harus dilakukan pengisian ‘buffer’ sebanyak 32 byte dengan perintah ‘Load Program Memory Page’ dengan cara seperti pada tipe S, selanjutnya isi bufer tersebut ditulis pada halaman yang dikehendaki dengan perintah ‘Write Program Memory Page’. Jika kapasitas flash 4K (4096), maka ada 128 ‘page’s. Prosedur perintah pemrograman mikrokontroler ada pada datasheet masing-masing yang mudah didapatkan di internet.

Categories: Mikrokontroler Tags:
Comments are closed.