打個比方,一個自動售貨機(jī),顧客給錢買東西,應(yīng)該找顧客零錢。程序上需要做A-B的減法。在沒有任何人購物的情況下,受到干擾而異常運(yùn)行到這個位置,而參與計算的寄存器保持在某個子程序中的數(shù)值,因此你啟動找錢的程序,白白的吐出鋼崩……
我們來做個數(shù)值分析,假設(shè)確認(rèn)用戶輸入鈔票到找零錢之間的指令總共有200條指令(讓用戶選擇商品),總共的程序空間是10K,那么我把程序搞亂,從而白白的拿到鋼崩的概率就是2%。我肯定會拿著電子大伙器從早到晚不停的折騰這個售貨機(jī)。
當(dāng)然,你可以說你會對敏感數(shù)據(jù)進(jìn)行防護(hù),但是你的程序不會跑飛,仍然會繼續(xù)運(yùn)行。假設(shè)一個輸入密碼的程序,異常之后剛好落在密碼合法性檢查之后。那簡直等于沒有密碼。你做的任何防護(hù)都是白搭。
這些問題在其他單片機(jī)中也可能存在,但是其他的單片機(jī)絕大部分情況下都會跑飛,從而最終被看門狗復(fù)位,雖然死了一次,但是沒造成什么損失,活過來以后照樣正常運(yùn)行。
總結(jié):聯(lián)想一下載人航天,我們的目的不是確保航天器絕對不死機(jī),而是確保即使航天器死機(jī)了,也能把人安全的送回來。