FIRMWARE’ lerimizi Güncelliyoruz, Rahat Ediyoruz….
Bootloader hakkındaki yazımın devamı olarak sunduğum bu yazımda güncelleme tekniklerinden kısaca bahsedeceğim. Özellikle uzaktan güncelleme ve bu teknikleri uygularken dikkat edilmesi gerekenlere değineceğim.
Kısa bir hatırlatma olarak güncellemeye neden ihtiyaç duyarız diyerek başlıyorum;
1- Yazılımınızda bir sorun tespit edebilirsiniz. Bu durumda sahadaki cihazınızı güncelleyerek bu sorundan kurtulabilirsiniz.
2- Cihazınızın özelliklerinde iyileştirme yapabilir ve yazılımınızın yeni sürümünü yayınlayabilirsiniz. Sahadaki cihazlarınız uygun ise müşterinizin bu güncellemeden faydalanmasını sağlayabilirsiniz.
3- Müşteriniz cihazınızda ücretli/ücretsiz bir iyileştirme isteyebilir. Bu iyileştirmeyi yaparak müşteri sadakatini arttırabilirsiniz.
4- Statik konfigürasyon bilgilerinizde değişiklik gerekebilir, bunları gerçekleştirebilirsiniz.
5- Firmware dışında cihazın destekleyebileceği sürücüleri ve bootlader’ı güncellemeniz gerekebilir.
“Nedir bu BOOTLOADER dedikleri?” yazımdaki cevap bekleyen sorularımızla başlayalım.
Soru 1: İşlemcime uygun Bootladerı nereden bulurum ?
Cevap : Genelde günümüz MCU üreticileri kullandıkları platformlara uygun USB, UART veya TCP/IP ‘ye yönelik Bootloader kütüphanelerini hazır sunabilmektedirler. Ayrıca kimi MCU’ lar içinde özellikle USB üzerinden Firmware Update edebilmenizi sağlayan gömülü kütüphaneler de bulunabilmektedir. MCU başlatma süreçlerini inceleyiniz. Bunların yanı sıra kendi bootloader programınızı yazmanız ve sisteminize göre özelleştirmeniz de mümkündür. Bunun için MCU’ nuzun bellek haritalarına hakim olmanız önemlidir. Bu şekilde bootladerdan beklentiniz ne ise tüm bunları istediğiniz şekilde yazabilir ve uygulayabilirsiniz. Bunun için gerekli olan bellek boyutunu da belirlemek elbette sizin elinizde.
Soru 2: Bootloader yüklenirken bir sorun çıkarsa, mesela USB’ yi çekersem, TCP/IP koparsa cihaza ne olacak?
Cevap: Güzel soru sormuşum, ben bile beğendim açıkçası. Evet, yanıtlayalım. Bu sorun her zaman çıkabilir ve çözüme muhtaç bir konudur. Elbette aranızda şunu diyenler olabilir. “ Bootloader’ı tekrardan başlatırız, yeniden bir kez daha yükleriz.” Elbette mümkün ancak güncellediğiniz cihaz uzakta ise ve başınıza bu gelmiş ise ne yapacaksınız? Unutmayın güncellediğiniz cihazlar çoğu zaman asli görevlerini yerine getirmekte iken iyileştirme maksatlı güncellenir. Hiçbir müşteri, iyileştirme maksatlı bir güncelleme sırasında var olan cihazını tümüyle kaybetmeyi istemez. Peki ne yapacağız?
Cevap basit. Yeni Firmware dosyanızı cihazınızın belleğinde ayrı bir yere yazacaksınız. Yazmış olduğunuz Firmware’ in doğru ve sağlıklı biçimde geldiğini check edeceksiniz. Doğrulamadan geçiyor ise yeni Firmware’i bu kez gerçek uygulama alanına yazıp sistemi resetleyerek işlemi tamamlayacaksanız. Bu sayede herhangi bir sebep ile güncelleme yarım kalsa bile, sorunlu güncellemeyi iptal edip eski Firmware ile sisteminizi ayakta tutmaya devam edebilirsiniz. Burada bilmeniz gereken konu, yeni Firmware’i depolayacak kadar ayrıca bir alana daha ihtiyacınız olduğudur. Bunu yapamıyorsanız özellikle uzaktan Firmware güncelleme konusunda ısrarcı olmayınız.
Soru 3: Peki sahada on binlerde ürünümüz varsa, bunları güncellemek ile nasıl başa çıkarız?
Cevap 3: Eveet, gelelim günün konusuna. Doğru ya, 20.000 adet cihazı sahaya sürdünüz ve birde ne gördünüz? Tüm sistemi tehdit eden bir bug var ve bu bug aktif olduğunda tüm saha felç olabilir. Bunu çözebilmek için zamanınız oldukça kısıtlı. Neler yapabiliriz? 100 tane personel ayarlarız, hepsine bir bilgisayar veririz, her birisi 200 tane cihazı günceller gelir. Olmaz mı? Yada 20.000 cihaza uzaktan bağlanırız ve TCP/IP üzerinden güncellememizi yaparız. Bizler buna sunucu bazlı ( Server Mode) güncelleme diyoruz. Nasıl bu daha keyifli değil mi? Ancak 20.000 tane cihazı TCP/IP üzerinden tek tek bağlanarak güncellemek te zaman alacaktır. “Yok mudur bunun daha kolay bir yolu? Keşke cihazlar kendi kendilerini güncelleyebilselerdi “ dediğinizi duyar gibiyim. Olmaz mı, var elbet. Bu gibi durumlar için OTA, OTAP, FOTA adlarıyla bilinen uzaktan güncelleme teknikleri devreye girmektedir.
OTA : Over The Air Programming
FOTA: Firmware Over The Air Programming
Özünde her iki arkadaşta aynıdır, üretici bazlı tercih edilen isimlerdir diyebilirim. Detaylarını araştırabilirsiniz. Ne iş yapar bu arkadaşlar? Tam da az önce içinizden geçenler var ya, işte tam olarak o işi yaparlar. Eğer bir güncelleme varsa ve güncelleme kendilerine aitse bu güncellemeyi kendileri yapar ve yollarına devam ederler. Sizin sahanızdaki cihazların güncellenmesi ile ilgili bir endişeniz ve takip zorunluluğunuz kalmaz.
Nasıl Çalışırlar?
OTA veya FOTA sunucusunda sahada bulunan cihazlara göre Firmware’ ler barındırılır. Cihazlarınızda OTA/FOTA izniniz oto/aktif ise cihazlar sürekli kontrol ettikleri bu sunucuda kendilerine ait güncel bir Firmware gördüklerinde sorgusuz sualsiz atlarlar ve kendilerini güncellerler. Sonra yeniden başlayarak yollarına devam ederler. OTA/FOTA izinleri denetime bağlı olarak ta verilebilir. Yani cihazlar yeni bir Firmware bulduklarında bir talep veya bilgilendirme oluştururlar. Yüce sahip bunu onayladığında güncelleme uygun bir zamanda gerçekleştirilir. Peki tüm cihazlar aynı anda güncellemeyi fark ettiklerinde sistem buna nasıl yanıt verecek? Oda OTA/FOTA sunucusunun görevi artık. Desteklediği port sayısı kadar bağlantı kabul edecek, sonrası için ise erteleme yöntemi ile planlama yaparak gerçekleştirecektir.
Öneri : Siz siz olun, güncelleme yeteneğinden mahrum cihazlar tasarlamayın, tasarlatmayın. Arkalarından çok koşarsınız emin olun. 😊 Herkese kolay gelsin.
Uğur TARLACI // 2020
ugurtarlaci@yahoo.com