Nedir bu BOOTLOADER dedikleri?
Bootloader konusuna dalmadan önce yazı içinde sıkça kullanacağım için Firmware nedir kısaca bahsetmek istiyorum. Firmware (Bellenim), bir gömülü sistemde, sistemden beklenilen tüm fonksiyonları gerçekleştirebilmesi için gerekli yazılım bütünüdür. Hal sürücüler, kütüphaneler, modüller, gömülü işletim sistemi (RTOS), dosya sitemi (FS) vs. Tüm bunlar Firmware kapsamında olabilir. Geliştirmesi tamamlanmış ve seri üretime geçerek sahaya yolculanan cihazlarda Firmware kaynaklı sorun yaşanma ihtimali, müşteri veya saha taleplerine göre güncellenme ihtiyacı her an doğabilir. Bu durumda sahaya sürülen binlerce cihazı güncellemek ciddi bir sorun olacaktır.
Neden? Çünkü üzerinde çalıştığınız kartlar artık birer üründür. Kutuları kapatılmış, garanti etiketleri yapıştırılmış ve müşterinizin elindedir. Bu durumda JTAG portuna, programlamak için işlemciye, hatta bu cihazlara erişiminiz bile mümkün olmayabilir. Peki bu durum nasıl çözülecek? İşte yazımızın kahramanı olan baş aktör BOOTLOADER denilen kurtarıcı burada devreye giriyor. Peki kimdir bu arkadaş, ne iş yapar, kimlerdendir? Bootloader (ön yükleyici); yukarıda bahsettiğim Firmware’i veya kimi zaman sadece işletim sistemini, MCU’nun dahili program belleğine veya sistemin harici program belleğine yazmaya yarayan bir ön yükleyicidir.
Bilgisayar terminolojisinde çok daha uzun yıllardır var olan bir kavramdır bildiğiniz üzere. Bilgisayarlarımızda bulunan Boot dosyası buna bir örnektir. Board üzerinde bulunan BIOS çipleri de bu boot dosyasını saklar ve her zaman boardun ayağa kalkmasını garantiler. Eğer başlatılacak bir işletim sistemi, bir Firmware var ise onu başlatarak sistemi ayağa kaldırır.
Bootloader bozulursa ne olur ? Ne olacak sistem tamamen durur, başlatılamaz. Bu durumda Boot dosyasını tekrar oluşturmalı ve sistemi ayağa kaldırmalısınız. Firmware güncellemek için Bootloader kullanılıyor. Peki Bootloader’ı güncellemek gerekirse, o zaman ne yapacağız? Her zaman karşılaşılabilecek bir durum. Çözümü elbette var. Sonuçta Bootloader ve Firmware’in başlangıç adresleri belirlidir. Firmware’i güncellemek istiyorsanız, Bootloader nereden başlayacağını bilir, eğer Bootlader’ı güncellemek istiyorsanız, Bootloader’in başlayacağı adres Firmware tarafından bilinir ve tersine güncelleme yapabilirsiniz. Elbette her iki güncelleme tipinde olası hatalara karşı sistemi tümüyle kaybetmemek için alınacak tedbirler farklıdır. Bu tedbirlerden ileri ki yazılarımda detaylı bahsederim.
Tüm bu anlattığım gerekliliklerden sonra halen üreticilerimizin büyük bir çoğunluğunun bootloader olmadan sistem kurmaları ilginç. 2020 yılındayız ve artık en küçük cihazlardan, en kapsamlı cihazlara kadar bootloader’ı olmayan sistemler üretilmemelidir. Hem müşteri hem de üretici tarafında bu konu kritiktir. Artık üretilen MCU’ larda bellek sorunu da pek kalmadı nihayetinde.
Bootloader hangi yöntemler ile güncelleme yapabilir?
Güncelleme yapacağınız tekniğe göre bootloader için ayıracağınız bellek alanı önemlidir. Çünkü her teknik bootloader dosyasını şişirecektir. Örneğin sadece USB üzerinden güncelleme yapılması isteniyorsa, sadece USB kütüphanelerinin varlığı yeterli olacaktır. Güncelleme için bilinen tüm iletişim tekniklerini kullanabilirsiniz. Sisteminizin barındırdığı iletişim modelleri bunun için yeterli olacaktır. Güncelleme için ayrıca bir güncelleme portu oluşturmanız gerekmeyebilir. Aynı sistemde birden fazla bootloader güncelleme tekniğini iç içe de kurgulayabilirsiniz.
Örneklerle gidelim; (Yakından güncelleme çözümleri — closely updating)
RS232, RS485, RS422, CAN Bus, USB, Profibus vs. vs. Tüm bu saydıklarım arasında sisteminizde olan var ise ayrıca bir güncelleme çözümüne ihtiyacınız yok. Bunların dışında taşınabilir bellekler ile de güncelleme yapabilirsiniz, yöntem çok yani.
Peki cihaz uzakta ise bu iş nasıl olacak? — remotely updating
Bu konuda da sistemin yapısının önemi var. Örneğin sisteminiz bir Ethernet portuna sahip ve NET ‘e çıkabiliyor. Burada TCP/IP ile güncelleme yapabilirsiniz. Eğer WiFi destekli bir cihaz ise yine TCP/IP ile dünyanın herhangi bir yerindeki cihazınızı güncelleyebilirsiniz. Örneğin RF temelli bir ağda çalışan cihazlarınız var. O zamanda RF Link üzerinden bu güncelleme gerçekleşebilir. Ya da Bluetooth destekli bir sisteme sahipsiniz. Bluetooth üzerinde güncelleyin gitsin… çözüm çok yani.
Peki bu bootloader sadece güncelleme işine mi yarar?
Elbette hayır, birlikte bakalım;
Bootloader kullanıyor olmanız size ne gibi faydalar sağlayacak?
- Güvenlik: Eğer JTAG portundan erişimler konusunda yeterli güvenlik önlemleri alamıyorsanız bu sizin açık kapınız. Duyan gelir yani. Dolayısı ile bootloader kullanıldığında artık JTAG kapısını kapatabilirsiniz ve riskinizi azaltabilirsiniz.
- Güncelleyebilme: Üretimi tamamlanmış ve müşteri ile buluşmuş olan cihazlarınızı her hangi bir sebeple sorunsuz güncelleyip, cihazlarınızın kullanım ömrünü uzatabilirsiniz.
- Üretim Kolaylığı ve Güvenliği: Bootloader dosyaları dizgi aşamasında dahi atılabilir. Yüksek sayıda üretim yapılıyorsa teknisyenleriniz herhangi bir güncelleme portundan bu işlemi gerçekleştirebilir. Üstelik üretim ekibiniz kodun içeriğine kesinlikle ulaşamaz. Bu da kurum içi ürün güvenliğini arttırır.
- Firmware’i Kriptolayabilme: Bootloader üzerinde bulunacak bir kripto çözücü ile kriptoladığınız Firmware çözülerek işlemciye yazılır. Bu sayede Firmware’inizi rahatlıkla dağıtabilirsiniz. Kimin eline geçtiğinin hiç önemi yok.
- Testler: FW yükleme öncesi Fonksiyonel test veya Diagnostik Test yapabilme özgürlüğünüz olur.
- Konfigürasyon Yönetimi: Konfigürasyon bilgilerini saklayabilme özelliği. Sisteme ait olmayan bir Firmware’ in karta yüklenmesinin engelleyebilirsiniz mesela.
- Müşteriye Özel Çözüm Üretebilme: Tümüyle aynı olan ürünlerin müşteri bazında ayrılması sağlanabilir ve müşterilere özel çözümlerin taşınabilmesi engellenir. Ticari olarak güncelleme ve müşteriye özel çözümlerden gelir elde edilebilmesinin yolu açılır.
Sisteminiz büyüdükçe Bootloader’ın nimeterinde daha çok faydalanabilirsiniz.
Diğer yazılarda bahsedeceğim bootloader başlıkları;
- İşlemcime uygun bootloader’ı nereden bulurum, kendim yazabilir miyim ?
- Bootloader yüklenirken bir sorun çıkarsa, örneğin USB kablo yerinde çıktı, TCP/IP bağlantısı kesildi, cihaza ne olur?
- Peki sahada on binlerce ürünümüz varsa, bunları güncellemek ile nasıl başa çıkarız ?
Bunlarda başka bir yazının konusu olsun :)
Uğur TARLACI//2019
ugurtarlaci@yahoo.com