新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種高可靠MCU系統監控方案

        一種高可靠MCU系統監控方案

        ——
        作者: 時間:2007-01-26 來源:《電子查詢網》 收藏
        1 目前mcu系統監控中的問題

        對于單片機系統,一般都需要監控電路來提高系統的可靠性。包括用電壓比較器對電源的監控和看門狗對程序的監控。為防止系統程序受干擾“飛掉”,常用看門狗定時器,這種方式對于系統進入死循環時很有效,而程序“飛掉”時極有可能跳過一段程序,正好進入另一條指令的開頭。尤其在risc系統中,絕大部分是單周期指令,容易遇到這種情況,此時程序會繼續運行下去,使看門狗失效。跳過的這段程序,可能包括一些接口控制執行指令,或某些數據的輸入輸出,或條件判斷,整個系統會因此而運行紊亂,或直接產生故障。系統出現這類故障時很難立即察覺。 1. 在運用極其廣泛的一類mcu系統,如分段定時控制系統中,象家用電器的電腦控制微波爐、洗衣機、電飯煲;電力行業的發電機轉速控制;冶金行業的連鑄、焊管及流水線系統等,都可能會在系統運行中遇到分段定時控制或某一區域內運行狀態與前段運行狀態密切相關的情況。此時簡單地用看門狗電路作系統監控,一旦出現系統死鎖而復位,將會使啟動以后的整個運行過程失效,這種方法顯然是行不通的。

        2. 對于分時多任務系統,其中的某個或幾個任務出現死鎖,而又有一個或多個任務仍正常運行的情況下,看門狗定時器可能會被“蒙蔽”而失去監控作用。

        3. 在一個程序運行周期很短,或系統根據不同運行狀況的程序處理時間相差很大的情況下,看門狗定時周期難以定得合適,此時若出現干擾死機可能因難于及時發現并解決而造成故障。

        如果有一種方法,使系統在運行過程中能夠自行感知程序運行狀況,出現問題能夠隨時察覺;發現故障立即報警、停止運行或復位,甚至可以自動糾錯,使程序恢復正確的運行,以實現對程序的最佳監控,那將是比較理想的。

        2 系統在線自行跟蹤基本方法

        系統在線運行過程中,如果能夠隨時將系統運行的過程即系統當前程序的實際流程路線自動記錄下來,就有辦法將預期的運行路線與之比較,從而避免程序出現不可預測的死鎖。打個比方,設想有一輛在公路上行駛的汽車,只要知道該汽車在各個岔路口的走向,就可以描繪出這輛汽車整個的行駛路線,但是難以保證汽車可能會在一條單一路線上行駛時拋錨。如果每隔一定距離以及重要路段設上“哨卡”,就能更加細致地了解到汽車的行駛情況,一旦出現問題就能立即知道事故出現的具體路段。同理,在程序運行過程中也可以通過人為設置的“哨卡”來記錄程序當前的運行路線。在多數情況下,這些“哨卡”對系統運行并沒有太大的影響。 實際上,這些“哨卡”就是可以任意插入流程中的簡短程序段,每一個“哨卡”有一個特定的“標志碼”以使我們能夠知道程序到底運行到何處。將這些標記按出現的順序記錄在存儲器中,就能依此知道cpu“行駛”的具體路線。當然,對系統的運行狀態了解得越細致,程序的運行時間會越長。應將它們設置在重要的數據讀寫或接口操作處,各分支路口和相對獨立的程序塊入口處,盡量減小對系統的影響。

        下面以gms97c51單片機構成的mcu系統為例說明系統對自身運行路線的跟蹤記錄方法。

        如圖1所示,設系統cpu為97c51,外接一片sram 6116來作運行記錄,為防止掉電和死機的影響,將ram用后備電池保護起來(系統上電初始化程序應包括將6116清零,清零程序在此略去)。

        在系統原來程序段中需要設“哨卡”的地方插入語句:

        mov
        sign, #mark
        ;#mark為標志號,sign定義

        lcall
        guide
        ;為存放標志號的寄存器地址

        這樣,僅插入6個字節對原來程序的存儲空間并無多大影響,所有的“哨卡”共用一個子程序。

        guide:
        push psw
        ; 保護原來程序可能用到的寄存器,如有必要也可

        push acc
        ;將dptr壓棧保護

        inc addr
        ;addr為標志號存放單元, 上電后需清零

        mov a,addr
        ;假設只用ram中的256個單元來做記錄

        jz out
        ;若存儲空間用完則停止存儲記錄

        mov dpl,addr
        ;設6116存儲地址為7f



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 盘山县| 木里| 江永县| 丰城市| 万山特区| 衡水市| 将乐县| 清苑县| 南昌市| 灵寿县| 昌江| 靖西县| 宿迁市| 台南市| 云阳县| 榆树市| 兴业县| 喀喇| 寿宁县| 巫山县| 太原市| 长宁区| 加查县| 司法| 义乌市| 剑阁县| 花莲市| 永定县| 广水市| 玉门市| 从江县| 广平县| 阿瓦提县| 湟源县| 韩城市| 沙洋县| 平江县| 阿鲁科尔沁旗| 四会市| 南汇区| 韩城市|