Rabu, 20 Oktober 2010

Update Firmware dengan Bootloader

Dalam pembahasan kali ini saya tidak mengkhususkan pada satu jenis mikrokontroler, namun sebagai contoh sederhana saya ambil mikrokontroler jenis AVR.

Ok, pertama-tama apa sih yang disebut dengan firmware itu? Kalau dibandingkan dengan kata software, tidak ada perbedaan jelas antara keduanya. Namun firmware sendiri bisa disebut sebagai software yang ditanamkan pada chip (IC) tertentu yang mengatur kinerja dari suatu alat, apapun jenis bahasa yang digunakan, toh nantinya pun diubah ke bahasa mesin juga (sarua keneh).

Ada dua jenis firmware jika ditilik dari level-nya yaitu low-level firmware dan high-level firmware. Low-level firmware itu adalah firmware yang biasa ditanamkan di ROM (Read Only Memory). Nah firmware jenis ini tidak dapat diubah-ubah, jadi sekali program sudah ditanam ke dalam ROM maka seumur hidup tidak akan bisa diubah lagi. Yang satu lagi adalah high-level firmware. Firmware jenis ini biasanya ditanamkan di flash memory sehingga sewaktu-waktu bisa diganti dengan firmware yang lebih baru. Pernah dengar kan kalau di tempat service handphone CS-nya bilang begini: "Wah mas, hp-nya harus di-update nih firmware-nya". Nah itu berarti handphone kita menggunakan firmware jenis high-level.



Ok, sedikit saja ya tentang pengertian firmware-nya, mari kita lanjut ke pembahasan utama yaitu meng-update firmware menggunakan bootloader. Seperti yang kita ketahui, untuk mengisi mikrokontroler dengan software(firmware) maka kita membutuhkan sebuah programmer/downloader. Programmer ini banyak sekali jenisnya namun yang sering digunakan adalah jenis In-System Programming (ISP) atau In-Circuit Serial Programming (ICSP) pada mikrokontroler Microchip. Sekarang pertanyaannya adalah: Bisakah kita mengisi mikrokontroler tanpa menggunakan programmer?

Jawabannya BISA! Bagaimana? Dengan menggunakan bootloader. Bootloader boleh dikatakan adalah suatu program kecil yang pertama kali dieksekusi ketika power-on yang akan memanggil program utama yaitu program yang kita download. Bootloader ini bisa melakukan berbagai macam fungsi tergantung kebutuhan kita. Pada beberapa mikrokontroler terdapat fitur yang dapat mengisi dirinya sendiri atau biasa disebut self-programming. Nah, fitur inilah yang dimanfaatkan untuk mengubah isi flash melalui bootloader. Bootloader sendiri bisa menerima data yang akan di-flash melalui jalur serial UART yang dikirim dari komputer kita.

It's make a sense, isn't it? Ada banyak bootloader yang beredar di internet jika kita rajin-rajin searching. Salah satunya yang saya temukan adalah AVR Universal Bootloader buatan Shao Ziyang. Bootloader ini dapat digunakan di hampir semua tipe AVR tentunya dengan mengubah konfigurasi. Cara kerja bootloader ini adalah dengan meminta perubahan logika pada pin I/O tertentu atau meminta key tertentu dari data serial UART untuk menandakan dimulainya transfer data untuk di-flash ke dalam IC. Proses ini memiliki timeout beberapa detik, jika ternyata tidak ada perubahan logika atau tidak ada key yang diterima maka bootloader akan memanggil program utama jika sebelumnya sudah terdapat program pada flash IC tersebut.

Sata serial UART biasanya menggunakan jalur data RS-232 yang sudah cukup usang. Pada netbook dan beberapa laptop terbaru pun sudah tidak ditemukan lagi konektor RS-232. Bisakah diganti dengan jalur data USB? Secara teori sih bisa, coba saja gunakan kabel konversi RS-232 to USB, toh di Windows akan dikenali sebagai port COM juga seperti pada jalur RS-232, dan device /dev/ttyUSBx pada Linux.

Apa sudah ada yang mencoba bootloader menggunakan USB? Boleh nih berbagi pengalaman, kalau saya sih belum :-)

1 komentar:

  1. Bootloader yang menggunakan USB contohnya adalah USBasp dan Arduino. Saya sudah pernah membuat USBasp. Arduino juga sering buat sendiri pake bootloader yang bisa didownload gratis.

    BalasHapus