Mikrodenetleyiciye yazılım yüklemek için bir programlayıcı donanıma ihtiyaç vardır. Ama Arduino'ya program yüklemek için bir donanıma ihtiyacımız yok. Direk yükleyebiliyoruz değil mi? Aslında değil. Arduino kartları içerisinde bootloader yazılımı hazır yüklü geldiğinden herhangi bir programlayıcı donanıma ihtiyaç duymadan usb üzerinden yeni yazılımı yükleyebiliyoruz. Peki bootloader nedir?

Hangi mikrodenetleyici olursa olsun yazdığımız programı yüklemek için mutlaka bir programlayıcı donanıma ihtiyaç vardır. Piyasaya sürdüğümüz cihazlarda zaman zaman güncelleme veya yeni özellikler eklemek istediğimiz olur. Bu durumda cihazları piyasadan toplayıp güncelleme yapıp tekrar geri dağıtmamız mümkün değildir. Müşterilerde programlayıcı cihaza sahip olamazlar.

                  

Bootloader yazılımı sayesinde, mikrodenetleyici seriport, usb, ethernet, sdkart vb kaynaklardan gelen yeni firmware yazılımını kendi kendisine yazar. İşte mikrodenetleyicinin haberleşme portundan gelen yeni firmware kendi kendine yazmasını sağlayan programa bootloader denilmektedir. Bu işlem esnasında programlayıcı cihaza ihtiyaç yoktur. Bootloader sayesinde mikrodenetleyici yazılımı güncellenebilir ve cihazın ömrü boyunca daha esnek hale gelir.

Birçok farklı bootloader yazılımı olmasına rağmen bana göre en verimlisi kendi bootloader yazılımını yazmamızdır. Tabi bu işlem herkes için kolay bir işlem değildir. Bu iş ciddi bir vakit alır. Kullanılan her mikrodenetleyici ailesi için yeniden bootloader yazmak gerekmektedir. Microchip MCC bize bu konuda kolaylık sağlamaktadır. Sadece çalışması konusunda garanti vermiyor. Bende elimdeki farklı PIC'leri sizler için test ettim. Kullandığım MPLABX ve XC8 versiyonlarınıda belirttim.

Bootloader yazılımı PIC hafızasının başlangıcına yazılıyor, kullanıcı yazılımı ise kalan bellek kısmına yazılıyor. Tahmin edebileceğiniz gibi bootloader yazılımı hafızada belli bir yer kaplamaktadır.

Bootloader nasıl çalışır? PIC'e enerji verildiğinde farklı doğrulama algoritmaları kullanarak bootloader yeni yazılıma ihtiyacı varmı yok mu kontrol eder. Bunun için 0x300 adresinde bir kod var mı kontrol edebilir. Uygulama yazılımının doğruluğu için CRC kontrolü yapar. Eğer bootloadera ihtiyac yoksa uygulama yazılımını çalıştırmaya başlar. Tekrar bootloader moduna dönmek için bir buton kullanılacağı gibi USARTtan gelecek özel bir kod sonrası bootloader moduna geçiş yapar. Bunun için 0x300 adresini silip PIC'i resetlemek olabilir.

Kaynak: http://www.picprojects.net/serialbootloader/