Rock Solid Firmware

Başlatan Erol YILMAZ, 03 Mart 2005, 23:52:47

Erol YILMAZ

Rock Solid Firmware

Iddiali bir baslik, kulaga da hos gelmiyor değil!
Bir reklamda buna benzer bir tema vardi. Oradan aklima geldi. Ciddi tasarimcilarin bilmesi ve uymasi veya ogrenmesi zorunlu, bir o kadar da gelistirmeye acik bir konu.

Neler iceriyor? Firmware iceren bir cihazin en kotu sartlarda dahi kullanicisini yuzustu birakmayan bir yazilim ve cevre birimleri olarak algiliyorum. Firmware kelimesinde min. Denetleyici birimlerini de dahil olarak goruyorum. Besleme, Giris-Cikis, Osilator ve diger dahili donanimlar...

Bircogunuz duymussunuzdur, kilitlenen dogru durust calismayan denetleyiciler. Denetleyici ozelligini yitirdikten sonra bir de denetlenme ihtiyaci duyan bu cihazlari hepimiz taniyor-kullaniyoruz.

Bir konu hakkinda bilgi edinmenin en kolay yollarindan biri de o konuyla ilgili urunleri ve ozelliklerini incelemektir. Buradan yola cikarak,

CCS ve IAR C derleyicilerinde  neden Fill ROM ozelligi bulunmaktadir?
Microchip bazi 18F denetleyicilerine niye Fail Safe Monitoring ozelligi koymaktadir?
Motorola yanlis komut veya adres bilgisi algiladiginda Reset islemini garanti etmektedir. Niye yanlis komut veya adres bilgisi alsin ki?

Sorularimiz degisik markalarla vs vs diye devam eder.
Lutfen dusunun... Yaziliminiz ne kadar guvenli ? Her satirini tek tek siz yazdiniz. Kullandiginiz denetleyicinin icini kendi eviniz kadar kolay tarif edebiliyorsunuz.

Denetleyiciyi bir insana benzetirsek,
Beslemeyi kesseniz denetleyici açlıktan ölür. Ani besleme dalgalanmaları denetleyicide zehir etkisi yapar. Osilatorunu cekip alsaniz kalbi durmus gibi olur. Watchdog Timer in kalp şokları ile atmasını sağlayacağı kalbi, yerinde bulamazsa ne yapmak gerekir? IO uclarına uygunsuz gerilim verseniz kolları kopar. Siz denetleyicinizi bunun gibi tehlikeli durumlardan koruyamazsanız denetlemeyi yapamazsınız. Öncelikle onu iyi yaşatmak zorundasınız. Ondan sonra yazılım oyunlarından bahsedebiliriz.

Her tasarımcı birseyler yazar, bunda hiçbir şüphem yok. Peki siz ona güvenebilirmisiniz? Yaptığınız ABS kontrolörün acil durumda sürücüye nanik yapması durumunda ne ile karşılacağınızı tahmin edebiliyormusunuz? Birkaç kişi ölebilir mi? Hemde sizin yaptığınız yazılımla !!! Tazminat ödemek zorunda kalırsanız bir kaç yüzyıl çalışmanız gerekebilir.

Evet en kötü durumdan kaçış eylem planıdır bu. Bu kötü durumlara düşmemek için ciddi firmware tasarımı yapmamız gerekiyor. %100 güvenli denetleyici yoktur aslında. Sadece buna yaklaşılabilir, asla ulaşılamaz.

Amerika menşeeli bir uzay aracının National firmasının yaptığı bir denetleyicinin hata yapması sonucu kontrolden çıktığını  duymuştum. Sonra yakaladılar mı bilmiyorum ama o tasarımcının yerinde olmak istemezdim. Bir araba olsa en fazla 150-200 Milyar dır. Bağı bahçeyi satıp ödersiniz !  (Bu arada bağ bahçenin baya kuvvetli olması lazım:) !)
Demek istediğim şudur ki;
   Tam güvenli firmware tasarımı yapan tasarımcı yoktur ama hiç güvenlik önlemi bulundurmayan tasarımcı pek çoktur. Şuna emin olun, Siz benim fren kontrolünü yaptığım bir araç kullanıyorsunuz. Hiç farkında değilsiniz değil mi? Tasarımlarımızı kullanıyoruz. Ben ne kadar eğitimliysem ve iyiyi görebiliyorsam siz de o kadar iyi ürünler kullanacaksınız. Bende öyle tabii ki.

Kimimiz Home Electronic, kimimiz Automotive, bazıları da Industrial Electronic tasarımı yapıyor. İngiliz bir grup (???) Automotive için firmware geliştirenlere yönelik MISRA STANDARTS oluşturmuş. Biz hala daha Watchdog Timer i kapalı tutalım...
Yıllardan beri bu işin içinde olupta, o ne işe yarıyor bilmiyorum ama açınca program sapıtıyor, diyenlere rastladım... komik değil mi? Peki ya bu adamın yaptığı tasarımın değeri sizce nedir? Güvenlik açısından bence beş para etmez... Güvenilmeyen bir şeyi kim kullanmak ister ki??? Orta halli bir otomobilde 20 kadar denetleyici kullanıldığını biliyormuydunuz?

Hepimizin ilgisini çekmesi gereken bu konuda neler yapabiliriz ? Bazı Uygulama Notları çevrime dahil edilebilir. Besleme, I-O, Osilatör gibi en parçaları mercek altına almalımıyız? Bu konu hakkındaki tecrübelere sizin de dahil olmak üzere herkesin ihtiyacı var.

Ne dersiniz?????

Konuya giriş olarak 2 sorum var...  Birincisi,

PIC veya başkaları zor besleme gerilimi şartlarında program hafızasından sıralı okuma-işlem yaparken atlama yapabilir mi? Brown out reset in algılaması mümkün olmayan durumlardan bahsediyorum.

İkincisi,

Osilatorde kullanılan kristalin çıkış ucundaki gerilim tepeden tepeye ne olmalıdır?

SpeedyX

Alıntı yapılan: "Erol"
Biz hala daha Watchdog Timer i kapalı tutalım...
Yıllardan beri bu işin içinde olupta, o ne işe yarıyor bilmiyorum ama açınca program sapıtıyor, diyenlere rastladım... komik değil mi? Peki ya bu adamın yaptığı tasarımın değeri sizce nedir? Güvenlik açısından bence beş para etmez...

Düşüncelerimi kimse bukadar iyi açıklayamazdı. Bende aynı düşüncelere sahibim. Yaptığınız sistemler çalışırken siz yanında olmayacaksınız! Lütfen onları tek başına çalışabilecek şekilde yapmaya çalışın, yada bırakın yapabilenler yapsın şimdilik.

Dostum sorularını cevapsız bırakıyorum, sadece bunları demek istedim.

z

ABS gibi kritik bir uygulama icin zamaninda uygulanan bir yontemden bahsedeyim.

Yaziliminizi yapar ve en az uc adet cipe yuklersiniz.

Ayni giris sinyalleri uc cipede girer. islemci cikislarini 3 girisli majority devresine, bunun cikisini da ABS guc elektronigine girersiniz.

Sistem nasil calisir?

3 islemci ayni girise karsilik ayni cevabi vermelidir. Oldu ya ciplerden biri sapitti. O zaman cogunlugun dedigi olur.

Bu bayagi bir guvenlik getiriyor ama %100 değil.

Tabiki islemci yazilimini bu mantiga uygun hale getirmek gerekiyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Program counter'in elektriksel gurultulerle sapitmasi eski islemcilerde sik rastlaniyordu. Zaten gunumuz modern islemcilerinde Watch Dog'a ilave olarak Illegal Adress Dedection gibi koruma duzenekleri de konuyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Erol YILMAZ

Elektriksel gurultulerde PC in atlamasi problemi az da olsa devam ediyor heralde. Cunku Kisadevre koruma sagladigim bir transistorun cikisini kes deyinceye kadar 3-4 program satirini bazen atliyor... Bu da demek oluyor ki gurultulu bir anda PC atlama yapabilir... dogru mu?