基于MCS-96單片機控制系統的程序失控防范
3 無(wú)擾動(dòng)重恢復
上述各項措施,只解決了如何發(fā)現系統被干擾和如何捕捉到失控的程序,這對于巡回檢測、顯示之類(lèi)的普通單片機應用系統已經(jīng)足夠了。但是,在一些關(guān)鍵的工業(yè)控制系統中,由于工作過(guò)程和生產(chǎn)工藝的邏輯性和順序性,當程序失控后,希望引導系統恢復執行剛才失控發(fā)生時(shí)的那個(gè)程序模塊,不希望,甚至不允許程序從入口處重新執行。更重要的是,失控程序往往會(huì )亂涂亂寫(xiě),不僅會(huì )破壞一些重要的信息,而且會(huì )對輸出口進(jìn)行非法操作。在此情況下前述方法就顯得太不完整了。因此,如何恢復系統的重要信息,盡量無(wú)擾動(dòng)地重新進(jìn)入正常工作狀態(tài),是一個(gè)必須解決的問(wèn)題,同時(shí)也是一個(gè)比較難解決的問(wèn)題。
3.1 利用軟件選擇啟動(dòng)方式的方法
復位有兩種方式:即初始復位和再次復位。習慣上稱(chēng)前者為“冷啟動(dòng)”,后者為“熱啟動(dòng)”?!袄鋯?dòng)”時(shí),系統的狀態(tài)全部無(wú)效,需進(jìn)行徹底的初始化操作。而 “熱啟動(dòng)”僅對系統的當前狀態(tài)進(jìn)行修復和有選擇的初始化,從而使系統盡可能快的恢復正常。系統初次上電投入運行時(shí),必須是“冷啟動(dòng)”。運行過(guò)程中,由于抗干擾措施引起的復位,一般均為“熱啟動(dòng)”。為了使系統能正確地決定采用何種啟動(dòng)方式,往往由軟件用“上電標志”來(lái)區分。系統入口程序設計策略如圖3—1所示。
為使“熱啟動(dòng)”順利進(jìn)行,首先要關(guān)中斷,重新設置堆棧,將所有的I/O口設置為安全狀態(tài),封鎖I/O操作,以免事態(tài)擴大,然后進(jìn)行信息的恢復和狀態(tài)的重入工作。
評論