Pengantar Pemrograman AVR – Tutorial Avrdude di Linux untuk Membakar HEX ke Atmega128 Melalui USBASP


Bismillahirrahmanirrahim.

Tulisan ini tersedia dalam PDF

text-x-hexTutorial sederhana ini sejatinya adalah catatan pengalaman saya setelah berhasil membakar (download) .hex ke dalam chip Atmega128 melalui kabel USBASP dengan program avrdude di Ubuntu. Tutorial ini –walaupun sederhana– ditujukan sebagai pijakan awal Anda untuk memrogram mikrokontroler AVR dengan hanya menggunakan Linux. Tutorial ini diharap memberi gambaran Anda untuk menggantikan semua aplikasi Windows yang biasa dipakai semisal untuk IDE: Codevision AVR, AVR Studio, dan Atmel Studio; dan untuk burner: Khazama dan Extreme Burner. Tutorial ini menjelaskan cara penggunaan avrdude sebagai pengganti Khazama atau Extreme Burner di Linux. Perlu Anda ketahui sebetulnya Khazama sendiri hanya GUI untuk avrdude yang dibuat khusus untuk USBASP[1] sedangkan Extreme Burner sendiri sudah memiliki versi Linux[2]. Jadi, yang berperan dalam pembakaran .hex di sistem operasi apa pun adalah avrdude. Semoga tutorial ini bermanfaat.

Prinsip Pemrograman AVR di Linux

  1. Tulis kode di IDE (seperti Codeblocks).
  2. Kompilasikan jadi .o dengan avr-gcc.
  3. Link jadi .hex dengan avr-objcopy[3][4].
  4. Bakar ke Atmega dengan avrdude.

Sebenarnya 4 langkah ini sama dengan prinsip pemrograman di Windows. Hanya saja semuanya Anda lakukan dengan IDE seperti Atmel Studio sehingga tidak tampak langkah-langkahnya. Untuk tidak disalahpahami, IDE di Linux semisal Codeblocks juga canggih (terdapat fitur syntax highlighter + code completion) layaknya Anda peroleh di Atmel Studio sehingga mudah menulis kode C. Tulisan ini hanya berfokus pada langkah ke-4.

Hardware yang Dibutuhkan

  1. Perangkat kabel USBASP (bukan USBISP MKII).
  2. Perangkat minimum system Atmega128.
  3. Laptop dengan sistem operasi Linux (saya pakai Ubuntu).
usbasp

USBASP

minimum system atmega128

Minimum System Atmega128

Software yang Dibutuhkan

  1. avrdude
  2. avr-gcc
  3. binutils
  4. avr-libc[3]
  5. Terminal
  6. Penyunting teks apa pun (sebagai ganti Atmel Studio untuk menulis kodenya)
atmega-avrdude-ubuntu6

Penyunting teks Kate untuk pemrograman AVR

Perlu saya tuliskan di sini biar kita tidak salah kaprah. Yang dilakukan oleh Atmel Studio sendiri sebetulnya hanyalah, hanyalah, memanggil avrdude untuk membakar ke chip Atmega. Jadi, sebetulnya yang diperlukan itu avrdude bukan Atmel Studio-nya. Lagipula, Atmel Studio sendiri hanya memakai avr-gcc untuk melakukan kompilasi kode C ke OBJ/ELF dan avr-objcopy linking ke HEX. Walhamdulillah, justru avrdude dan avr-gcc itu asalnya dibuat untuk Linux. Mereka open source software. Maka semestinya bisa juga kita lakukan hal yang sama. Tidak harus dengan Windows. Karena di sini saya hanya menunjukkan cara membakar, saya tidak menjelaskan penulisan kode pada penyunting teks. Namun saya jelaskan bahwa saya bisa memakai aplikasi Gedit, Geany, atau Kate yang terinstal di Ubuntu saya untuk melakukannya. Anda punya? Pakailah.

Seluruh kebutuhan di atas dapat diperoleh dalam 1 perintah saja di Ubuntu yaitu sudo apt-get install avrdude avr-gcc avr-libc binutils.

Spesifikasi Sistem

Supaya tidak kebingungan, maka saya sebut di sini spesifikasi mesin saya.

  • Laptop ASUS X44C 32 bit dengan satu port USB 2.0 dan satu port USB 3.0.
  • Ubuntu 12.04 32 bit.
  • Terinstal aplikasi IDE Codeblocks, CodeLite, Geany, Eclipse, serta penyunting teks mutakhir Kate di Ubuntu saya.
  • Terinstal GNOME Terminal dan Konsole di Ubuntu saya.

Langkah-Langkah Download HEX ke Atmega

  1. Tancapkan kabel USBASP pada port USB 2.0.
  2. Tancapkan kabel USBASP sisi ujung pada minimum system Atmega.
  3. Jalankan perintah avrdude.

Perintah untuk Download HEX

# avrdude -c usbasp -P usb -p atmega128 -U flash:w:namaprogramnya.hex

Penjelasan Perintah[5]

Perlu diketahui sebelumnya. Pertama, perintah inilah yang digunakan oleh Atmel Studio untuk melakukan pembakaran. Kedua, karena Anda menggunakan Linux, Anda harus melakukannya dalam mode root (tanda # di atas). Perintah untuk menjadi root adalah su. Sekarang, mari perhatikan apa maksud perintah di atas.

avrdude : nama perintah untuk membakar kode .hex ke chip Atmega

-c usbasp : menentukan kabel downloader yang Anda gunakan. Karena kita pakai USBASP, maka kita juga tentukan usbasp. Awas, besar kecil huruf harus diperhatikan. Jika salah menentukan opsi ini, avrdude akan salah juga mengenali jalan mana yang harus ditempuh untuk mengirim .hex ke Atmega. Pilihan nama kabel untuk opsi ini sangat banyak. Jika Anda memakai kabel jenis lain semacal USBISP MKII, Anda bisa membaca datasheet nama opsinya dengan ketik perintah man avrdude di Terminal.

-P usb : menentukan jalur dari kabel downloader yang tertancap di komputer Anda. Karena saya menggunakan USBASP dan ia menggunakan USB, maka saya tulis usb. Mungkin seumur hidup Anda tidak akan mengubah opsi ini karena selalu menggunakan USB.

-p atmega128 : menentukan chip yang akan ditulisi kode .hex. Pilihan nama chip untuk opsi ini sangat banyak. Silakan ketik perintah man avrdude.

-U flash:w:namaprogramnya.hex : menentukan perilaku dari kegiatan download yang kita lakukan, apakan sekadar dikirim lalu ditolak begitu saja oleh Atmega atau melakukan penulisan (flash) ke dalamnya. Opsi flash maksudnya melakukan flash ke dalam chip sedangkah w maksudnya write (menulis) kode .hex. Ini opsi paling penting dalam perintah avrdude ini. Jika Anda tidak menentukannya, maka usaha Anda sia-sia. Jika ingin mempelajari perintah avrdude lebih lanjut, silakan ketik perintah man avrdude di Terminal.

Hasil Download

Berikut ini bukti yang saya salin dari Konsole. Lihat, sama persis dengan Atmel Studio Anda. Skrinsot Konsole dan foto LED yang menyala juga saya sertakan.

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9702
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: reading input file “namaprogramnya.hex”
avrdude: input file namaprogramnya.hex auto detected as Intel Hex
avrdude: writing flash (4306 bytes):

Writing | ################################################## | 100% 1.70s

avrdude: 4306 bytes of flash written
avrdude: verifying flash memory against namaprgramnya.hex:
avrdude: load data flash data from input file namaprogramnya.hex:
avrdude: input file namaprogramnya.hex auto detected as Intel Hex
avrdude: input file namaprogramnya.hex contains 4306 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.49s

avrdude: verifying …
avrdude: 4306 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done. Thank you.

root@master:/home/master/Publik/AVR#

atmega-avrdude-ubuntu

Proses pembakaran .hex dengan avrdude

avrdude berhasil led menyala

LED Menyala

Rangkuman

  1. Tancapkan kabel USBASP.
  2. Jalankan perintah flashing avrdude.

Proses bakar HEX di Linux secara garis besar adalah demikian.

Tentang Tulisan Ini

Tulisan ini adalah catatan pribadi saya ketika membakar .hex ke Atmega dengan avrdude. Keberhasilan tersebut terjadi setelah mencoba perintah avrdude yang disebutkan di salah satu laman forum AVR Freaks[6]. Sebelum keberhasilan ini, saya menganggap mustahil melakukan pemrograman AVR di Linux karena semua orang selalu menggunakan Windows. Namun pada akhirnya, tulisan ini adalah proof of concept untuk saya sendiri bahwa Linux dapat menggantikan Windows untuk melakukannya. Tulisan ini dibuat dengan harapan kita beralih dari penggunaan aplikasi bajakan kepada yang legal walaupun banyak tantangan karena di situ terdapat barakah. Tulisan ini ditulis seluruhnya di Ubuntu 12.04 dengan menggunakan FOSS secara total baik Android untuk mengambil foto maupun transfer datanya ke Ubuntu saya serta memakai WordPress untuk menyusunnya. Tulisan ini disusun tanpa melibatkan Windows dan aplikasinya sedikit pun. Semoga tulisan ini menjadi pijakan awal Anda untuk melakukan pemrograman AVR lebih lanjut di Linux.

Ucapan Terima Kasih

Terima kasih untuk Akang Muhammad Arif Wicaksono yang telah meminjamkan semua hardware plus hape Sony Ericsson untuk mengambil foto.

Referensi

[1] http://jlectronique.org/ProgrammateurAVREN.htm

[2] http://extremeelectronics.co.in/avr-tutorials/gui-software-for-usbasp-based-usb-avr-programmers/

[3] http://www.tldp.org/HOWTO/Avr-Microcontrollers-in-Linux-Howto/x207.html

[4] http://www.ethernut.de/en/documents/led-blink.html

[5] http://www.micahcarrick.com/tutorials/avr-microcontroller-tutorial/getting-started.html

[6] http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=561733

10 thoughts on “Pengantar Pemrograman AVR – Tutorial Avrdude di Linux untuk Membakar HEX ke Atmega128 Melalui USBASP

    1. Ade Malsasa Akbar Penulis Tulisan

      Sebenarnya IDE untuk AVR itu bisa apa saja, bahkan Notepad pun bisa. Saya yakin akang sudah tahu. Namun, saya harap akang menulis bagaimana memrogram AVR di Linux dengan aplikasi Linux karena sangat kurang tutorial tersebut dalam Bahasa Indonesia. Silakan pakai Kate atau Geany, atau apa saja di Linux. Itu akan membantu teman-teman yang baru memilai, Kang.

      Balas
  1. abuhirr

    Bismillah, Baarokallohufiykum, dulu ini skripsi ana waktu tahun 2010 pake Kontrollerlab IDE-nya, sudah lengkap ada menu avrdude-nya disitu…tinggal klik2 aja, jadi dech hex-nya ter-burning lewat atmega8 usbasp menuju atmega8535

    Balas
    1. Ade Malsasa Akbar Penulis Tulisan

      Bismillahirrahmanirrahim.

      Masya Allah. Bolehkah ana mendapatkan dokumen skripsi antum tersebut? Apakah antum akan memublikasikannya di blog antum? Kalau iya, maka itu akan jadi tutorial KontrollerLab paling lengkap di Indonesia, bahkan di dunia. Antum tahu sendiri betapa minim tutorial AVR berbasis Linux. Barakallahu fiikum wa jazakallahu khairan.

      Ana saat ini masih pakai Kate, andalan ana. Ana tahu KontrollerLab memang sangat mantap tetapi sementara ana pakai yang ada dulu. Kate dengan sedikit konfigurasi shortcut key bisa lakukan semua itu, Akh. Ini ana lagi pakai, barusan habis magrib tadi ada coba: Ctrl+B ana pasangkan untuk build (
      avr-gcc -mmcu=atmega128 -Os mega.c -o mega.o) lalu Ctrl+Shift+C untuk Clean (
      avr-objcopy -j .text -j .data -O ihex mega.o mega.hex) lalu untuk membakar, ana serahkan kepada Konsole yang terintegrasi di dalam Kate. Ana cukup tekan tombol panah atas untuk memanggil kembali perintah
      # avr-objcopy -j .text -j .data -O ihex mega.o mega.hex sebelumnya. Ana baru hari ini belajar jadi sementara masih enak (banget) dengan Kate. Suatu hari ana ingin membahas KontrollerLab dan yang lain.

      Balas
  2. abuhirr

    Bismillah, ana usahakan posting di blog, cara menggunakan Kontrollerlab di Ubuntu, Baarokallohufiykum, tapi kalo mau ana kirimkan file skripsi ana ke email antum yg di googleplus

    Balas
    1. Ade Malsasa Akbar Penulis Tulisan

      Bismillahirrahmanirrahim.

      O, jangan repot-repot yaa Akhii. Maksud ana tadi, antum unggah skripsi antum ke blog. Nanti ana unduh dari situ. Itung-itung kebaikan buat antum kalau dokumen itu dipakai orang yang lagi membutuhkan (antum juga tahu, sekali lagi, tutorial AVR Linux sangat kurang). Bagaimana?

      Ide antum menulis tutorial KontrollerLab jadi posting sangat bagus. Ana menanti.

      Balas
  3. hilmi

    Assalamu’alaikum…
    mas ade: izin nyimak. hatur nuhun udah berbagi :)
    mas abuhirr: izin unduh ^_^
    semoga ilmu-ilmu antum bermanfaat.

    Balas

Dilarang menggunakan emotikon