Apa itu Bootloader pada Mikrokontroler, dan Mengapa Diperlukan?
Ketika seorang pengguna menyalakan komputer mereka, biasanya sebelum tampilan Sistem Operasi muncul di layar monitor. Biasanya akan terdapat tahap booting, dengan tampilan teks dan logo dari pabrikan CPU. Ya, Itu adalah bootloader, sebuah program yang dijalankan pertama kali saat mesin dinyalakan sebelum program utama dijalankan.

Dari sini tentu pembaca mulai paham tentang apa itu bootloader di dalam dunia sistem embedded. Sebuah bootloader memperkaya kemampuan mikrokontroler dan membuatnya menjadi perangkat yang mampu memprogram dirinya sendiri.
Salah satu fungsi dari bootloader misalnya adalah pada kasus beragamnya jenis mikrokontroler yang yang masing – masing terkadang memiliki protokol yang berbeda-beda untuk dapat diprogram, sehingga memerlukan cara dan teknik pemrograman berbeda. Misalnya, antara mikrokontroler ATMega dengan STM32 jelas memiliki perangkat downloader dan software yang berbeda dalam memprogram.
Bagaimana jika seorang perancang membuat perangkat consumer berbasis mikrokontroler yang diproduksi masal (seperti modem MIFI, misalnya). Dan bagaimana bila kelak firmware perangkat tersebut memiliki bug atau ingin diupdate dengan versi terbaru? Tentu tidak mungkin kan, mendatangi satu persatu ataupun meminta pengguna untuk mengupgrade firmware menggunakan perangkat tambahan yang tak lazim bagi orang awam ?
Dengan menggunakan bootloader, seorang pengguna tinggal mentransfer binary firmware melalui komunikasi serial pada USB misalnya. Bootloader yang menerima data binary tersebut kemudian menulis ulang (overwrite) ke Flash Memory.
Tentu pembaca pernah menemui suatu kasus dimana perangkat / gadget yang digunakan memerlukan upgrade firmware menggunakan transfer data melalui kabel USB atau via TCP/IP. Nah, proses upgrade firmware tersebut sebenarnya menggunakan “jasa” bootloader di balik layar
Adverstiment
Satu contoh lagi penggunaan bootloader yang paling mudah adalah pada Arduino board yang berbasis mikrokontroler AVR dari Microchip.

Saat arduino booting atau pada kondisi RESET, bootloader akan dipanggil untuk kali pertama. Fungsi bootloader ini adalah untuk menerima sketches dari Arduino IDE dan menuliskan instruksi binary ke Flash memory. Inilah yang menyebabkan mengapa kala memprogram Arduino, programmer hanya perlu menghubungkan dengan komunikasi serial pada komputer dengan Arduino IDE (In Application Programming)
- Bootloader pada Mikrokontroler STM32
Lalu bagaimana pada Mikrokontroler STM32. Misalnya pada Mikrokontroler STM32F446RE yang merupakan mikrokontroler pada development board Nucleo-64. Apakah memiliki bootloader? ya, mikrokontroler STM32F446RE memiliki bootloader internal (on-chip bootloader) yang tersimpan di System Memory (ROM) namun secara default, bootloader ini tidak akan dipanggil saat dinyalakan atau pada kondisi RESET. Diperlukan konfigurasi khusus pada pin – pin mikrokontroler, supaya bootloader dipanggil saat pertama kali mikrokontroler berada pada kondisi RESET.
Bootloader pada mikrokontroler STM32 ini juga memiliki fungsi yang sama, yaitu untuk mengunggah atau mengunduh binary program dari mikrokontroler (in application programming)
Secara default, untuk memprogram mikrokontroler STM32 diperlukan rangkaian tambahan berupa ICDP (In Circuit Debugging and Programming) yang diberinama ST-LINK. Rangkaian ini disediakan onboard di dalam development board Nucleo. Karena itulah fungsi bootloader onchip tidak diperlukan. Metode ini kemudian disebut sebagai In System Programming (ISP)
Berbeda dengan board Arduino UNO yang dibahas sebelumnya, dimana tidak memiliki ICDP bawaan, Sehingga satu – satunya jalan untuk mengupload binary program adalah menggunakan In Application Programming pada bootloader

Baca Juga :
Adverstiment
- Bootloader pada Mikrokontroler Tiva C Series
Sekarang mari ambil contoh lain sebagai perbandingan yaitu mikrokontroler EK-TM4C123GXL yang merupakan mikrokontroler pada Launchpad Tiva C Series dari Texas Instruments. Apakah memiliki bootloader di dalam mikrokontrolernya? Ya, mikrokontroler Tiva C Series juga memiliki bootloader bawaan yang diberinama TivaWare Bootloader di dalam ROM-nya.

Sama seperti Mikrokontroler STM32, secara default Tiva C Series saat berada pada kondisi RESET atau booting, bootloader bukan aplikasi yang kali pertama yang dipanggil. Diperlukan konfigurasi khusus pada pin -pin mikrokontrolernya untuk mengaktifkan bootloader tersebut.
Launchpad pada Tiva C Series juga memiliki rangkaian tambahan ICDP yang dapat digunakan untuk memprogram sekaligus debugging, sehingga fungsi bootloader tidaklah diperlukan.