İşte bazı düşünce ve fikirler:
ROM'u daha yaratıcı kullanın.
ROM'da yapabileceğiniz her şeyi saklayın. Bir şeyleri hesaplamak yerine, arama tablolarını ROM'da saklayın. (Derleyicinizin arama tablolarınızı salt okunur bölüme çıkardığından emin olun! Kontrol etmek için çalışma zamanında bellek adreslerini yazdırın!) Kesme vektör tablonuzu ROM'da saklayın. Tabii ki, ROM'unuzun RAM'inizle ne kadar güvenilir olduğunu görmek için bazı testler yapın.
Yığın için en iyi RAM'inizi kullanın.
Yığında bulunan SEU'lar muhtemelen en olası çökme kaynağıdır, çünkü dizin değişkenleri, durum değişkenleri, dönüş adresleri ve çeşitli türlerin işaretçileri gibi şeyler genellikle yaşar.
Zamanlayıcı-kene ve bekçi köpeği zamanlayıcı rutinlerini uygulayın.
Sistem kilitlemesini idare etmek için her zamanlayıcı işaretini bir "sağlık kontrolü" rutininin yanı sıra bir bekçi köpeği rutini de çalıştırabilirsiniz. Ana kodunuz ayrıca ilerlemeyi belirtmek için bir sayacı periyodik olarak artırabilir ve sağlık kontrolü rutini bunun gerçekleşmesini sağlayabilir.
Uygulamak hata düzeltme kodlarını yazılımında.
Hataları algılamak ve / veya düzeltmek için verilerinize artıklık ekleyebilirsiniz. Bu, işlem süresini artıracak ve işlemciyi daha uzun süre radyasyona maruz bırakacak, böylece hata olasılığını artıracak, bu nedenle ödünleşimi dikkate almalısınız.
Önbellekleri hatırla.
CPU önbelleklerinizin boyutlarını kontrol edin. Son zamanlarda eriştiğiniz veya değiştirdiğiniz veriler büyük olasılıkla bir önbellek içinde olacaktır. Önbelleklerin bazılarını devre dışı bırakabileceğinize inanıyorum (büyük bir performans maliyetiyle); önbelleklerin SEU'lara ne kadar duyarlı olduğunu görmek için bunu denemelisiniz. Önbellekler RAM'den daha sertse, önbellekte kalmasını ve RAM'i tekrar sıraya sokmasını sağlamak için kritik verileri düzenli olarak okuyabilir ve yeniden yazabilirsiniz.
Sayfa hatası işleyicilerini akıllıca kullanın.
Bir bellek sayfasını mevcut değil olarak işaretlerseniz, CPU erişmeye çalıştığınızda bir sayfa hatası verir. Okuma isteğine hizmet vermeden önce bazı kontroller yapan bir sayfa hatası işleyicisi oluşturabilirsiniz. (PC işletim sistemleri bunu diske değiştirilen sayfaları şeffaf bir şekilde yüklemek için kullanır.)
Kritik şeyler için montaj dilini kullanın (her şey olabilir).
Montaj dili ile kayıtlarda ve RAM'de neler olduğunu bilirsiniz ; Eğer biliyor CPU kullanarak hangi özel RAM tabloları ve riskini düşük tutmak için dolaylı bir şekilde bir şeyler tasarlayabilirsiniz.
Kullanım objdump
aslında montaj üretilen dilde bakmak ve rutinleri her kaplıyor ne kadar kod egzersiz yapın.
Linux gibi büyük bir işletim sistemi kullanıyorsanız sorun mu yaşıyorsunuz? çok fazla karmaşıklık ve yanlış gidecek çok şey var.
Unutmayın, bir olasılık oyunu.
Bir yorumcu dedi
Hataları yakalamak için yazdığınız her rutin aynı nedenden dolayı kendini başarısızlığa uğratır.
Bu doğru olsa da, bir kontrol rutininin doğru çalışması için gerekli olan (bay) 100 bayt kod ve verilerin hata şansı, başka bir yerde hata olasılığından çok daha azdır. ROM'unuz oldukça güvenilirse ve neredeyse tüm kod / veriler aslında ROM'daysa, oranlarınız daha da iyidir.
Yedekli donanım kullanın.
Aynı kodla 2 veya daha fazla özdeş donanım kurulumu kullanın. Sonuçlar farklıysa, bir sıfırlama tetiklenmelidir. 3 veya daha fazla cihazla, hangisinin tehlikeye atıldığını belirlemeye çalışmak için bir "oylama" sistemi kullanabilirsiniz.