Immunitástudatos programozás - Immunity-aware programming
Amikor beágyazott rendszerhez készít firmware- t , az immunitás-tudatos programozás olyan programozási technikákra utal, amelyek javítják az átmeneti hibák toleranciáját a programszámlálóban vagy a program más moduljaiban, amelyek egyébként meghibásodáshoz vezetnének. Az átmeneti hibákat általában az egyes események felborulása , az elégtelen energiaellátás vagy más "forrás" eszköz által továbbított erős elektromágneses jelek okozzák .
Az immunitás-tudatos programozás példa a védekező programozásra és az EMC-tudatos programozásra . Noha ezeknek a technikáknak a többsége az „áldozat” eszköz szoftverére vonatkozik annak megbízhatóbbá tétele érdekében, ezek közül néhány a „forrás” eszközön található szoftverekre vonatkozik, hogy azok kevésbé nem kívánt zajt bocsássanak ki.
Feladat és célkitűzések
Microcontrollers " firmware lehet olcsón javítására elektromágneses összeférhetőség egy beágyazott rendszer .
A beágyazott rendszerek firmware-je általában nem tekinthető rádiófrekvenciás zavarforrásnak . A rádióemissziót gyakran a rendszer óra harmonikus frekvenciái és a kapcsolási áramok okozzák . Az ezeken a vezetéken lévő impulzusok gyors emelkedési és zuhanási időkkel bírhatnak, ami miatt vezetékeik rádióadóként működhetnek. Ezt a hatást fokozzák a rosszul megtervezett nyomtatott áramköri lapok . Ezeket a hatásokat csökkentheti a lassabb emelkedési idejű mikrovezérlő kimeneti illesztőprogramok használata vagy a rendszer alkatrészeinek kikapcsolása.
A mikrovezérlő könnyen vezérelhető. Rádiófrekvenciás interferenciákra is érzékeny. Ezért ha a mikrovezérlő szoftvere ellenáll az ilyen hibáknak, olcsón javíthatja a rendszer toleranciáját az elektromágneses interferenciával szemben, csökkentve a hardver átalakításának szükségességét.
A mikrokontroller alapú rendszerek lehetséges interferenciái
A CMOS mikrokontrollereknek vannak olyan gyenge pontjai, amelyeket az elektromágneses interferencia ellen működő szoftverekkel lehet megerősíteni. Gyakran szükséges a rendszer és annak követelményeinek meghibásodási módja és hatáselemzése . Az elektromágneses összeférhetőség problémái könnyen hozzáadhatók egy ilyen elemzéshez.
Tápegység
A tápfeszültség lassú változásai nem okoznak jelentős zavarokat, de a gyors változások kiszámíthatatlan gondokat okozhatnak. Ha egy feszültség 150 százalékkal meghaladja a vezérlő adatlapján szereplő paramétereket, az a bemeneti vagy a kimeneti port egy állapotba akadásához vezethet, amelyet CMOS reteszelésnek neveznek . Belső áramszabályozás nélkül a reteszelés miatt a mikrovezérlő kiég. A standard megoldás a szoftveres és hardveres változások keveréke. A legtöbb beágyazott rendszer rendelkezik őrző időzítővel . Ennek az őrzőnek külsőnek kell lennie a mikrokontrolleren, hogy valószínűleg immunis legyen minden valószínű elektromágneses interferenciára. Vissza kell állítania az áramellátást, röviden kikapcsolva. A felügyeleti időszaknak a mikrovezérlő kiégetéséhez szükséges idő és energia felének vagy kevesebbnek kell lennie. A tápegység kialakítását jól meg kell alapozni és szét kell választani a mikrovezérlőhöz közeli kondenzátorok és induktorok segítségével; néhány tipikus érték párhuzamosan 100uF és 0,1uF.
Az alacsony energia a legtöbb mikrovezérlőben súlyos meghibásodásokat okozhat. Ahhoz, hogy a CPU sikeresen dekódolja és végrehajtja az utasításokat, a szállított feszültség nem csökkenhet a minimális feszültségszint alá. Amikor a szállított feszültség e szint alá csökken, a CPU egyes utasításokat helytelenül hajthat végre. Az eredmény váratlan tevékenység a belső adatokon és a vezérlő vonalakon. Ez a tevékenység a következőket okozhatja:
- A CPU regiszter sérülése
- I / O regisztráció korrupciója
- I / O pin véletlenszerű váltás
- SRAM korrupció
- EEPROM korrupció
A Brownout észlelés a legtöbb rendszerben megoldja a legtöbb problémát azzal, hogy leállítja a rendszert, amikor a fő áram nem megbízható. Egy tipikus rendszer újraindít egy időzítőt, amikor az AC főfeszültség meghaladja névleges feszültségének 90% -át. Ha az időzítő lejár, megszakítja a mikrovezérlőt, amely aztán leállítja a rendszerét. Számos rendszer az áramellátás feszültségét is méri, hogy megvédje az áramellátás lassú leépülésétől.
Az oszcillátor
A CMOS oszcillátorok bemeneti portjai nagy impedanciákkal rendelkeznek , ezért nagyon érzékenyek az átmeneti zavarokra. Szerint Ohm-törvény , nagy impedanciájú okoz nagyfeszültségű különbségeket. Emellett nagyon érzékenyek a nedvesség vagy a por rövidzárlatára .
Az egyik tipikus hiba, amikor az oszcillátorok stabilitása befolyásolódik. Ez leállíthatja, vagy megváltoztathatja az időszakát. A normál rendszer sövényeknek tartalmazniuk kell egy kiegészítő oszcillátort, amely valamilyen olcsó, robusztus sémát használ, például invertergyűrűt vagy ellenállás-kondenzátor egylépéses időzítőjét. Alaphelyzetbe állítást követően (amelyet valószínűleg egy watchdog időzítő okoz), a rendszer ezeket alapértelmezés szerint alapértelmezés szerint el tudja látni, csak akkor kapcsolhatja be az érzékeny kristályoszcillátort, ha az időmérés stabilnak bizonyult. A nagy megbízhatóságú rendszerekben az is jellemző, hogy az órajel frekvenciáját úgy mérik, hogy összehasonlítják azt egy külső standarddal, általában egy kommunikációs órával, a távvezetékkel vagy egy ellenállás-kondenzátor időzítővel.
Az elektromágneses interferencia törései lerövidíthetik az óra periódusait, vagy futási impulzusokat okozhatnak, amelyek helytelen adateléréshez vagy parancs végrehajtásához vezetnek. Az eredmény hibás memóriatartalom vagy programmutató. Ennek hardveres leküzdésének szokásos módszere egy chipen lévő fáziszárt hurok használata a mikrovezérlő tényleges órajelének előállításához. A szoftver időnként ellenőrizheti az adatszerkezeteket és elolvashatja a kritikus portokat szavazással, terjesztve az olvasmányokat időben vagy térben.
Bemeneti / kimeneti portok
A hosszú vonalakkal vagy külső perifériákkal összekapcsolt bemeneti / kimeneti portok - ideértve a címsorokat és az adatvonalakat is - azok az antennák, amelyek lehetővé teszik a zavarok hatásait. Az elektromágneses interferencia helytelen adatokhoz és címekhez vezethet ezeken a vonalakon. Az erős ingadozások miatt a számítógép félreolvashatja az I / O regisztereket, vagy akár le is állíthatja a kommunikációt ezekkel a portokkal. Az elektrosztatikus kisülés valóban megsemmisítheti a portokat, vagy meghibásodásokat okozhat.
A legtöbb mikrokontroller érintkezője nagy impedanciájú bemenet vagy vegyes bemenet és kimenet. A nagy impedanciájú bemeneti csapok érzékenyek a zajra, és hamis szinteket regisztrálhatnak, ha nincsenek megfelelően megszüntetve. Azoknál a csapoknál, amelyek nem egy IC-ben vannak lezárva, ellenállásokat kell csatlakoztatni. Ezeket össze kell kötni a földdel vagy a tápellátással, biztosítva az ismert logikai állapotot.
Korrekciós intézkedések
Nagyon fontos a lehetséges hibák elemzése a javítás előtt. Meg kell határozni az okot, hogy a probléma kijavítható legyen.
Az Autógyártó Szoftver Megbízhatósági Egyesület hiba esetén a következőképpen azonosítja a szükséges lépéseket:
- A felhasználó tájékoztatása / figyelmeztetése
- Tárolja a hibás adatokat, amíg egy meghatározott visszaállítást el nem lehet végezni
- Tartsa a rendszert meghatározott állapotban, amíg a hibát ki nem lehet javítani
Alapvetően redundanciát alkalmaznak a hibák ellensúlyozására. Ez magában foglalja az extra kód futtatását (időbeni redundancia), valamint az extra bitek megtartását (redundancia az űrben).
Utasítási mutató (IP) hibakezelés
A megzavarodott utasításmutató súlyos hibákhoz vezethet, például meghatározatlan ugrás a memória tetszőleges pontjához, ahol illegális utasításokat olvasnak. A rendszer állapota meghatározatlan lesz. Az IP-hibákat szoftver alapú megoldásokkal lehet kezelni, mint például funkció-tokenek és NOP-diák .
Számos processzor, például a Motorola 680x0, hardvercsapdával rendelkezik, amikor illegális utasításokat talál. A csapdavektorban definiált helyes utasítást hajtják végre, nem pedig a véletlenszerűt. A csapdák nagyobb tartományi hibákat képesek kezelni, mint a funkció-tokenek és a NOP-diák. Az illegális utasítások kiegészítéseként a hardvercsapdák biztonságosan kezelik a memória-hozzáférés megsértését, a túlcsordulást vagy a nullával való felosztást.
Token átadása (function token)
Javított zajvédelem érhető el a végrehajtási folyamatszabályozással, amelyet token átadásnak neveznek. A jobb oldali ábra a funkcionális elvet vázlatosan mutatja. Ez a módszer az utasításmutatók által okozott programfolyamat-hibákkal foglalkozik.
A megvalósítás egyszerű és hatékony. Minden függvény egyedi funkcióazonosítóval van ellátva. A függvény meghívásakor a függvény azonosítója egy globális változóba kerül. A függvény csak akkor hajtódik végre, ha a globális változóban szereplő függvény azonosítója és a függvény azonosítója megegyezik. Ha az azonosítók nem egyeznek, akkor egy utasításmutató hiba lépett fel, és konkrét korrekciós műveletek hajthatók végre. A token-átadás mintapéldányát C-ben programozott globális változó használatával a következő forráslista tartalmazza.
Ez lényegében egy "kar / tűz" szekvenálás minden funkcióhíváshoz. Az ilyen sorrend megkövetelése a biztonságos programozási technikák része, mivel toleranciát generál az egybites (vagy ebben az esetben kóbor utasításmutató) hibákra.
A függvény tokenek megvalósítása 10-20% -kal növeli a programkód méretét, és lelassítja a teljesítményt. A megvalósítás javítása érdekében a fentiekhez hasonló globális változók helyett a függvényazonosító argumentumként átadható a függvényfejlécen belül, az alábbi kódminta szerint.
NOP dia
A NOP-Fills segítségével bizonyos esetekben javítható a rendszer megbízhatósága zavart utasításmutató esetén. A teljes programmemória, amelyet a programkód nem használ, megtelt a művelet nélküli ( NOP ) utasításokkal. A gépi kódban a NOP utasításokat gyakran 0x00 jelöli (például Intel 8051, ATmega16 stb.). A rendszert meghatározott állapotban tartják. A fizikai programmemória végén egy utasításmutató hibakezelést (IPEH IP-Error-Handler) kell végrehajtani. Bizonyos esetekben ez egyszerű visszaállítás lehet.
Ha egy utasításmutató hiba lép fel a végrehajtás során, és egy program NOP utasításokkal töltött memóriaszegmensre mutat, akkor elkerülhetetlenül hiba történt és felismerhető.
A NOP-kitöltések végrehajtásának három módszere alkalmazható:
- Az első módszerben a fel nem használt fizikai memóriát manuálisan 0x00 értékre állítja a keresés és a (HEX) programfájlban történő cserével . A módszer hátránya, hogy ezt minden összeállítás után el kell végezni.
- A második módszer a linker kitöltési opcióját használja , amely egy előre definiált állandóval (ebben az esetben 0x00) tölti fel a fel nem használt memóriaterületeket.
- A harmadik módszer az, hogy megfelelő számú NOP assembler direktívát illesszen be közvetlenül a programkódba.
A CodevisionAVR C fordító használata esetén a NOP kitöltések könnyen megvalósíthatók. A chip programozó a Flash és az EEPROM szerkesztésének funkcióját kínálja, hogy egy adott értékkel kitöltse. Az Atmel ATmega16 használatával nincs szükség ugrásra a 0x00 cím visszaállítására, mivel az utasításmutató túlcsordulása automatikusan 0x00 értékre állítja be. Sajnos a túlcsordulás miatti visszaállítások nem egyenértékűek a szándékos visszaállítással. A tervezett visszaállítás során az összes szükséges MC regisztert hardveren alaphelyzetbe állítják, amit nem 0x00-ra történő ugrással végeznek. Tehát ezt a módszert nem alkalmazzák a következő tesztekben.
I / O regiszter hibák
A mikrokontroller architektúrája megköveteli, hogy az I / O vezetékeket a szilícium szerszám külső szélére helyezzék. Így az I / O érintkezőket erősen befolyásolják a szilíciummag felé vezető átmeneti zavarok, és az I / O regiszterek a mikrovezérlő egyik legkiszolgáltatottabb része. A rosszul olvasott I / O regiszterek helytelen rendszerállapothoz vezethetnek. A legsúlyosabb hibák a reset portnál fordulhatnak elő, és megszakíthatják a bemeneti portokat. A megzavarodott adatirányregiszterek (DDR) gátolhatják a buszra írást.
Ezeket a zavarokat a következőképpen lehet megakadályozni:
1. A legfontosabb regiszterek ciklikus frissítése
- A legfontosabb regiszter ciklikus frissítésével és az adatirányregiszterekben lévő adatok lehető legrövidebb időközönként történő frissítésével csökkenthetők a hibák. Így egy tévesen beállított bit javítható, mielőtt negatív hatásai lehetnek.
2. A bemeneti regiszterek többszörös olvasása
- A zavarok szűrésének további módszere a bemeneti regiszterek többszörös olvasása. Ezután ellenőrizzük a beolvasási értékek konzisztenciáját. Ha az értékek konzisztensek, akkor érvényesnek tekinthetők. Az értéktartomány meghatározása és / vagy az átlagérték kiszámítása javíthatja egyes alkalmazások eredményeit.
- Mellékhatás : fokozott aktivitás
- Hátránya a perifériák állandó frissítéseinek és kiolvasásának köszönhető megnövekedett aktivitás. Ez a tevékenység további kibocsátásokat és meghibásodásokat eredményezhet.
- Külső megszakítási portok; verem túlcsordulás
- A külső megszakításokat a megszakítási porton eső / emelkedő élek vagy magas / alacsony potenciál váltja ki, ami megszakítási kéréshez (IRQ) vezet a vezérlőben. A hardveres megszakításokat maszkolható megszakításokra és nem maszkolható megszakításokra (NMI) osztják. A maszkolható megszakítások kiváltása egyes időkritikus funkciókban leállítható. Ha megszakítást hívnak, az aktuális utasításmutató (IP) elmentésre kerül a veremben, és a veremmutató (SP) csökken. A megszakítási szolgáltatási rutin (ISR) címét kiolvassák a megszakítási vektortáblázatból és betöltik az IP regiszterbe, és ennek eredményeként az ISR végrehajtásra kerül.
- Ha a megszakításokat - a zavarok miatt - gyorsabban generálják, mint a feldolgozást, a verem addig nő, amíg az összes memória ki nem kerül. Előfordulhat, hogy a verem vagy más adatok felülíródnak. Védekező szoftverstratégia alkalmazható. A stack pointer (SP) megtekinthető. Ezután a verem növekedése egy meghatározott címen túl megállítható. A veremmutató értéke a megszakítási szolgáltatás rutin elején ellenőrizhető. Ha az SP egy olyan címre mutat, amely meghaladja a megadott veremhatárokat, akkor visszaállítható.
Adatredundancia
A hibadetektáló és -javító egységek nélküli rendszerekben a rendszer megbízhatósága javítható szoftveres védelem biztosításával. A teljes memória (kód és adatok) védelme nem lehet praktikus a szoftverekben, mivel ez elfogadhatatlanul sok általános költséget okoz, de ez egy szoftver által megvalósított olcsó megoldás a kódszegmensek számára.
A digitális rendszerek másik elemi követelménye az adatok hibátlan továbbítása. A más alkatrészekkel folytatott kommunikáció lehet a rendszer gyenge pontja és hibaforrása. Egy átgondolt átviteli protokoll nagyon fontos. Az alábbiakban ismertetett technikák továbbított adatokra is alkalmazhatók, ezáltal növelve az átviteli megbízhatóságot.
Ciklikus redundancia és paritásellenőrzés
A ciklikus redundancia-ellenőrzés egy olyan hash-függvény , amelyet egy ellenőrző összeg előállítására használnak , amely egy kis egész szám egy nagy adatblokkból, például hálózati forgalomból vagy számítógépes fájlokból. A CRC-ket kiszámítják az átvitel vagy másolás előtt és után, és összehasonlítják annak megerősítésével, hogy egyenlőek. A CRC észleli az összes egy- vagy kétbites hibákat, minden páratlan hibát, minden sorozathibát, ha a sorozat kisebb, mint a CRC, és a széles sorozatú hibákat is. A paritásellenőrzés alkalmazható egyetlen karakterre (VRC - függőleges redundanciaellenőrzés ), ami további paritásbitet eredményezhet, vagy egy adatblokkhoz (LRC - longitudinális redundanciaellenőrzés ), amely blokkellenőrző karaktert ad ki. Mindkét módszer meglehetősen egyszerűen megvalósítható egy XOR művelet segítségével. Kompromisszum, hogy kevesebb hiba észlelhető, mint a CRC esetében. A paritásellenőrzések csak páratlan számú megfordított bitet észlelnek. A bithibák páros száma észrevétlen marad. Lehetséges fejlesztés mind a VRC, mind az LRC használata, kettős paritás vagy optimális téglalap alakú kód (ORC) néven.
Néhány mikrovezérlő hardveres CRC egységgel rendelkezik.
Különböző típusú duplikációk
Az adatredundancia sajátos módszere a sokszorosítás, amelyet többféle módon lehet alkalmazni, az alábbiak szerint:
- Adatmásolás
- Az adatok sérülésének kezelése érdekében a fontos regiszterek és változók több példánya tárolható. Ezután az azonos értékeket tároló memóriahelyek vagy szavazási technikák közötti konzisztencia-ellenőrzéseket lehet elvégezni az adatok elérésekor.
- A forráskód két különböző módosítását kell végrehajtani.
- Az első a programváltozók egy részének vagy mindegyikének a sokszorosításával felel meg az adatok redundanciájának bevezetése érdekében, és az összes operátor módosítása a változók bevezetett replikájának kezelésére.
- A második módosítás következetesség-ellenőrzéseket vezet be a kontrollfolyamatban, így minden változó két példánya közötti konzisztencia ellenőrizhető.
Az adatok kiolvasásakor összehasonlítjuk a két adatsort. Zavar észlelhető, ha a két adatsor nem egyenlő. Hiba jelenthető. Ha mindkét adatsor sérült, jelentős hibáról lehet beszámolni, és a rendszer ennek megfelelően reagálhat.
A legtöbb esetben a biztonság szempontjából kritikus alkalmazások szigorú korlátozásokkal rendelkeznek a memória elfoglalása és a rendszer teljesítménye szempontjából. A teljes változókészlet megkettőzése és a konzisztencia-ellenőrzés bevezetése minden olvasási művelet előtt az optimális választás a hibafedés szempontjából. A teljes változókészlet duplikálása lehetővé teszi, hogy a szoftverek redundancia technikája a hibák rendkívül magas százalékát fedezze. Másrészt a változók alacsonyabb százalékának megismétlésével ki lehet cserélni a kapott hibafedést a CPU idő rezsivel.
A kísérleti eredmény azt mutatja, hogy a változók mindössze 50% -ának duplikálása elegendő a hibák 85% -ának fedezésére, a CPU idő rezsije mindössze 28%.
Figyelmet kell fordítani a konzisztencia-ellenőrzés végrehajtására is, mivel azt általában minden egyes olvasási művelet után vagy az egyes változók élettartamának végén végzik el. Az ellenőrzés gondos végrehajtása minimalizálhatja az alkalmazás CPU-idejét és kódméretét.
- Funkcióparaméterek duplikálása
Mivel az adatok hibáinak észlelését az összes változó másolásával és az egyes olvasási műveletek utáni konzisztencia-ellenőrzések hozzáadásával érik el, az eljárás interfészeinek megfelelően különös szempontokat kell alkalmazni. Az eljárásoknak átadott paraméterek, valamint a visszatérési értékek változóknak tekintendők. Ezért minden eljárásparaméter megismétlődik, valamint a visszatérési értékek. Egy eljárást továbbra is csak egyszer hívnak meg, de két eredményt ad vissza, amelyeknek ugyanazt az értéket kell tartalmazniuk. A jobb oldali forráslista a függvényparaméterek duplikációjának mintaváltását mutatja.
- Tesztelje a duplikációt
A teszt másolása az egyik legerőteljesebb módszer az általános puha hibák észlelésére. Hátrány, hogy nem lehet szigorúan feltételezni a hibák okát (EMI, ESD stb.), Sem a várható hibák típusát (a vezérlési folyamatot érintő hibák, az adatokat érintő hibák stb.). A memória, a gyorsítótár, a regiszter vagy a buszon továbbított adatok bájtjainak hibás bitváltozásai ismertek. Ezek az adatbájtok lehetnek működési kódok (utasítások), memória címek vagy adatok. Így ez a módszer képes a hibák széles körének felderítésére, és nem korlátozódik egy adott hibamodellre. Ezzel a módszerrel a memória körülbelül négyszeresére nő, és a végrehajtási idő körülbelül 2,5-szer annyi idő, mint ugyanaz a program tesztduplikáció nélkül. A jobb oldali forráslista a tesztfeltételek ismétlődésének mintavételét mutatja.
- Ágazati duplikáció
A teszt duplikációval összehasonlítva, ahol az egyik feltételt keresztellenőrzik, az elágazó duplikációval a feltételt duplikálják.
A program minden feltételes tesztjére az állapotot és az ebből adódó ugrást át kell értékelni, az ábra szerint. Csak akkor történik hiba, ha a feltétel ismét teljesül, az ugrás végrehajtásra kerül.
- Az utasítások megkettőzése és a megvalósítás sokszínűsége
Mi az előnye, ha az adatokat, teszteket és ágakat másolják, ha a kiszámított eredmény helytelen? Az egyik megoldás az utasítások teljes másolása, de másként kell végrehajtani őket. Tehát két különböző program ugyanazzal a funkcionalitással, de különböző adatsorokkal és különböző megvalósításokkal kerül végrehajtásra. Kimeneteiket összehasonlítják és egyenlőnek kell lenniük. Ez a módszer nem csak a bit-flipeket vagy a processzor hibáit fedi le, hanem a programozási hibákat (hibákat) is. Ha kifejezetten a hardveres (CPU) hibákat hivatott kezelni, akkor a szoftver a hardver különböző részein keresztül valósítható meg; például az egyik megvalósítás hardveres szorzást használ, a másik megvalósítás pedig áthelyezéssel vagy összeadással szoroz. Ez jelentős általános költségeket okoz (több, mint kétszerese a kód méretének). Másrészt az eredmények kiemelkedően pontosak.
Portok
A portok visszaállítása és a portok megszakítása
A visszaállítási portok és a megszakítások nagyon fontosak, mivel ezek emelkedő / lehulló élek vagy magas / alacsony potenciál által kiválthatók a megszakítási porton. Az átmeneti rendellenességek nem kívánt visszaállításokhoz vagy megszakításokhoz vezethetnek, és ezáltal az egész rendszer összeomolhat. Minden kiváltott megszakítás esetén az utasításmutató mentésre kerül a veremben, és a veremmutató csökken.
Próbálja csökkenteni az él által kiváltott megszakítások számát . Ha a megszakításokat csak szinttel lehet kiváltani, ez segít biztosítani, hogy a megszakító csapon lévő zaj ne okozzon nem kívánt műveletet. Nem szabad megfeledkezni arról, hogy a szint által kiváltott megszakítások ismételt megszakításokhoz vezethetnek, amíg a szint magas marad. A megvalósítás során ezt a jellemzőt kell figyelembe venni; az ismételt nem kívánt megszakításokat le kell tiltani az ISR-ben. Ha ez nem lehetséges, akkor az él által kiváltott megszakítás azonnali belépésekor elegendőnek kell lennie egy szoftveres ellenőrzésnek a csapon, hogy megállapítsa, hogy a szint megfelelő-e.
Minden fel nem használt megszakítás esetén hibakezelési rutint kell végrehajtani annak érdekében, hogy a rendszert egy nem kívánt megszakítás után meghatározott állapotban tartsa.
A nem szándékos visszaállítások megzavarják a program megfelelő végrehajtását, és nem elfogadhatók kiterjedt alkalmazások vagy biztonság szempontjából kritikus rendszerek esetén.
A differenciálás visszaállítása (hideg / meleg indítás)
Gyakori rendszerkövetelmény a munka automatikus folytatása zavart / zavart követően. Hasznos lehet rögzíteni egy rendszer állapotát kikapcsoláskor, és az adatokat nem felejtő memóriába menteni. Indításkor a rendszer ki tudja értékelni, hogy a rendszer újraindul-e zavar vagy meghibásodás (meleg indítás) miatt, és helyreállítható-e a rendszer állapota, vagy hiba jelezhető-e. Hideg indítás esetén a memóriában tárolt adatok érvényesnek tekinthetők.
Külső áramfogyasztás mérése
Ez a módszer a hardveres és a szoftveres megvalósítás kombinációja. Javasol egy egyszerű áramkört az elektromágneses interferencia detektálására az eszköz saját erőforrásainak felhasználásával. A legtöbb mikrovezérlő, mint az ATmega16, integrálja az analóg-digitális átalakítókat (ADC), amelyek felhasználhatók az interferencia okozta szokatlan áramellátási ingadozások észlelésére.
Amikor a szoftver interferenciát észlel, a mikrovezérlő biztonságos állapotba léphet, miközben várja az agresszió elmúlását. Ebben a biztonságos állapotban kritikus kivégzések nem engedélyezettek. A grafikon bemutatja, hogyan lehet az interferencia detektálást végrehajtani. Ez a technika könnyen használható bármely mikrovezérlővel, amely rendelkezik AD átalakítóval.
Őrzőkutya
A watchdog időzítő egy olyan elektronikus időzítő, amely észleli a többi alkatrész rendellenes működését, és korrekciós intézkedéseket kezdeményez a normál működés helyreállítása érdekében. Különösen biztosítja, hogy a mikrovezérlő által vezérelt eszközök ne hibásodjanak meg teljesen, ha szoftverhiba vagy pillanatnyi hardverhiba lép fel. A Watchdog időzítők általában monostabil időzítőn vagy digitális számlálón alapulnak . Az időzítő áramkör integrálható a mikrokontroller chipbe, vagy megvalósítható külső áramkörként. A Watchdog időzítők jelentősen javíthatják a mikrovezérlő megbízhatóságát elektromágnesesen befolyásolt környezetben.
A szoftver rendszeres időközönként tájékoztatja a felügyelő kutyát, hogy továbbra is megfelelően működik. Ha a felügyelő kutyát nem tájékoztatják, ez azt jelenti, hogy a szoftver már nem a megadott módon működik. Ezután a watchdog visszaállítja a rendszert egy meghatározott állapotba. A visszaállítás során a készülék nem képes feldolgozni az adatokat, és nem reagál a hívásokra.
Mivel a watchdog időzítő visszaállításának stratégiája nagyon fontos, két követelménynek kell megfelelni:
- A megfigyelő kutya csak akkor állítható vissza, ha minden rutin megfelelően működik.
- A visszaállítást a lehető leggyorsabban végre kell hajtani.
Az őrzőkutya egyszerű aktiválása és az időzítő rendszeres alaphelyzetbe állítása nem használja optimálisan a felügyeletet. A legjobb eredmény elérése érdekében az időzítő frissítési ciklusát a lehető legrövidebbre kell állítani, és a fő funkcióból kell meghívni, így a sérülés vagy hiba bekövetkezése előtt vissza lehet állítani. Ha egy mikrovezérlőnek nincs belső felügyeleti kutyája, akkor hasonló funkciót lehet megvalósítani egy időzítő megszakítás vagy egy külső eszköz használatával.
Barna
Egy barnás áramkör figyeli a VCC szintjét működés közben, összehasonlítva azt egy fix kiváltó szinttel. Amikor a VCC a trigger szint alá csökken, azonnal aktiválódik a barnulási visszaállítás. Amikor a VCC újra emelkedik, az MCU bizonyos késedelem után újraindul.
Lásd még
- Elektromágneses kompatibilitás
- EMC-tudatos programozás
- Kibocsátás-tudatos programozás
- Hibatűrő számítógépes rendszer
- Hibatűrő szoftver
- Az EMC-irányelvek listája
- Szoftver hibatűrés