• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      51系列單片機軟件抗干擾設計方法

      2012-04-29 19:14:57李莉
      電腦知識與技術 2012年15期
      關鍵詞:處理程序看門狗斷點

      李莉

      摘要:軟件可靠性設計越來越引起人們的重視,軟件抗干擾不僅設計靈活,節(jié)省硬件資源,并且具有高可靠性,文章從軟件測試的角度闡述了51系列單片機軟件抗干擾設計技術和方法。

      關鍵詞:51系列單片機;軟件抗干擾

      中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2012)15-3725-03

      The Software Anti-interference Design of MCS-51

      LI Li

      (Software Test Center of Shanghai Academy of Spaceflight Technology, Shanghai 201109, China)

      Abstract: Today the technology of software reliability design have received more consideration. Software reliability design can not only save hardware resource but also provide high reliability. This article describe the technology of software reliability design from the point of software test view.

      Key words: MCS-51; software anti-interference

      51系列單片機應用廣泛,但由于指令系統(tǒng)是復雜指令集結構,致使其抗干擾性能不高,通常我們從硬件和軟件兩個方面開展單片機可靠性的設計。硬件抗干擾性設計復雜,且提高硬件成本,相對的,軟件抗干擾性設計可以在不增加系統(tǒng)復雜性和硬件成本的基礎上,也能做到大幅提高系統(tǒng)的穩(wěn)定性[1]。

      軟件抗干擾的設計方法通常有:開機自檢和初始化、軟件陷阱、看門狗、關鍵信息三取二等等,這些設計能有效地防止程序走飛,或者在程序走飛后將程序拉回正常軌道。本文結合了作者在軟件測試工作的經(jīng)驗和實例,講述了51系列單片機軟件的多種抗干擾設計方法及注意事項。

      1抗干擾設計方法

      1.1開機自檢和初始化

      開機自檢和初始化是每個嵌入式軟件上電運行的第一個抗干擾步驟,通常會有以下一些操作:

      1)對程序ROM區(qū)的校驗和;

      2)對RAM區(qū)先寫后讀0xaa,0x55查看寫入與讀出的數(shù)是否一致;

      3)檢查I/O口;

      4)檢測其他接口電路,如擴展的EEPROM、A/ D轉換電路等。

      程序自檢和初始化設計時需要注意的問題有:

      1)自檢錯誤時程序應給出錯誤提示;

      2)對接口進行自檢時,應設定響應時間限制,以保證在硬件無響應的情況下程序不會陷入死循環(huán),會及時報錯;

      3)初始化時注意考慮對自檢結果帶來的影響。

      這里對于第3點舉例說明:

      某軟件要求程序的遙測下傳數(shù)據(jù)中應包含當前工作狀態(tài)、硬件故障等信息,該軟件具有冷、熱啟動功能。程序實現(xiàn):冷啟動時對所有的內(nèi)存進行了初始化,熱啟動時對遙測下傳數(shù)據(jù)進行初始化。程序自檢和初始化流程如圖1所示。

      從流程可以看出,自檢工作在初始化之前進行,導致自檢錯誤信息被初始化,即自檢錯誤不會被遙測記錄并發(fā)送。

      由于程序自檢一般不會出錯,因此該錯誤一直潛伏在程序中,直至第三方測試時構造了自檢錯誤的測試案例才被發(fā)現(xiàn)。從這個實例我們得出:軟件的初始化內(nèi)容要慎重處理,不能簡單地直接初始化所有使用資源,要充分考慮自檢操作使用資源的因素,并在設計時梳理全局資源,避免全局資源的使用沖突。

      1.2軟件陷阱

      通常在程序存儲器中未使用的EPROM空間填入空操作指令NOP ( 00H) ,最后再填入一條跳轉指令,跳轉到跑飛處理程序,或者直接填入指令LJMP 0000H (020000)。

      軟件陷阱的一般結構為:

      NOP

      NOP

      LJMP FLY ; FLY為跑飛處理程序

      由于51單片機有兩個中斷優(yōu)先級,為了防止軟件在二級中斷嵌套時走飛,由軟件陷阱轉入初始化程序時,要用兩個中斷返回語句清除二級中斷服務狀態(tài)標志,如以下代碼所示:

      ERR:CLREA;關閉中斷

      …………;其余清端口操作

      MOVDPTR,#ERR1

      PUSHDPL

      PUSHDPH

      RETI

      ERR1:CLRA

      PUSHACC

      PUSHACC

      RETI;從地址0000H開始執(zhí)行

      在某軟件的測試中,將程序PC指針拉飛后程序運行至跑飛處理程序,確沒有正確復位,跑飛處理程序如下:

      ERR:CLREA;關閉中斷

      …………;其余清端口操作

      MOVDPTR,#ERR1

      PUSHDPH

      PUSHDPL

      RETI

      ERR1:CLRA

      PUSHACC

      PUSHACC

      RETI;從地址0000H開始執(zhí)行

      與標準的跑飛處理程序比較可以看出,該程序的錯誤是在ERR子程序中地址壓棧時高低位順序錯誤。為什么設計師會犯這樣的錯誤呢?因為設計師習慣了中斷子程序中的現(xiàn)場保護寫法,在普通的中斷子程序中,通常會在中斷開頭保護現(xiàn)場,中斷結束恢復現(xiàn)場,即:

      中斷開頭時: PUSHDPH

      PUSHDPL

      中斷結束時:POP DPL

      POP DPH

      RETI

      設計師照著中斷中現(xiàn)場保護的寫法來涉及跑飛處理程序,卻沒有注意到,中斷中的地址是先壓棧后出棧的,而跑飛處理程序中該地址只有壓棧操作,是靠RETI這個指令進行出棧操作的。

      這里就涉及到對RETI這個指令的理解,在51系列單片機中,響應中斷后,硬件自動生成LCALL addr16的指令,addr16是各中斷源的中斷矢量地址。被中斷打斷時程序運行至一個地址,我們稱為斷點地址。處理器首先將程序計數(shù)器PC的內(nèi)容(斷點地址)壓入堆棧進行保護,先低位地址后高位地址,同時堆棧指針SP加2。然后將對應中斷源的中斷矢量地址addr16裝入PC,使程序轉向該地址去執(zhí)行中斷程序。在遇到RETI指令后,程序干兩件事:一是撤銷中斷申請,彈出斷點地址,先彈出高位地址,后彈出低位地址,同時堆棧指針SP減2,恢復原程序的斷點地址執(zhí)行;二是恢復中斷觸發(fā)器原先狀態(tài)。

      以上這些都是在中斷響應時硬件自動執(zhí)行的,因此,對于斷點地址入棧的順序設計師通常都不會注意,斷點地址自動入棧時是先低位地址后高位地址,RETI恢復時是先彈出高位地址,后彈出低位地址。由于跑飛處理程序是一個子程序,而不是中斷程序,因此硬件不會自動將斷點地址壓棧,這里ERR的PUSH語句就是為了將斷點地址壓棧,因此應當按照先低位后高位的順序進行,以匹配之后RETI語句的出棧操作。

      以上是匯編語言的跑飛處理程序,需要注意的是在51系列的高級語言編程程序中,要在跑飛處理程序中進行中斷申請的撤銷。因為通常中斷子程序在結束處會對中斷申請進行撤銷,但是一旦在中斷執(zhí)行過程中程序走飛進入跑飛處理程序,那么中斷子程序最后的撤銷操作未被執(zhí)行,即中斷申請未被撤銷,因此需要在跑飛處理程序中進行該操作,避免程序復位后中斷未被釋放而導致中斷不響應。

      1.3看門狗

      看門狗是防止軟件陷入死循環(huán)的有效手段,在正常工作時,安插在循環(huán)程序中的清除脈沖信號周期性地清除看門狗,看門狗定時器不會溢出,當系統(tǒng)受到干擾使程序跑飛時,看門狗定時器得不到及時清除而溢出,產(chǎn)生CPU復位信號,使系統(tǒng)重新開始[2]。

      由于看門狗對時間的要求非常精確,為了避免在正常的流程中超時喂狗而導致看門狗復位,設計師有時會陷入“喂狗綜合癥”,即過于頻繁的清除看門狗,導致看門狗失去作用。

      在某程序的測試過程中,設計師在主程序和某中斷程序中均進行了喂狗操作,由于該中斷觸發(fā)頻繁,且中斷優(yōu)先級高,導致喂狗過頻。在這種情況下如果主程序走飛,看門狗也不能發(fā)現(xiàn),因為頻繁到來的中斷中不停在喂狗,導致看門狗定時器不會溢出。因此在看門狗設置上,通常的建議是只在主程序中喂狗,以保證狗確實能看住“門”。

      1.4關鍵信息三取二

      對于在太空環(huán)境中運行的軟件來講,關鍵數(shù)據(jù)三取二是防止單粒子翻轉的有效且必要的手段,所謂三取二即是將關鍵的數(shù)據(jù)存儲在三個不同的地方,訪問數(shù)據(jù)應采取三取二表決方式裁決。

      某軟件的主要功能是控溫,加熱片溫度低于加熱點則控制進行加熱,加熱片溫度高于斷開點則控制停止加熱。加熱點/斷開點的溫度值由外部注入,程序中對加熱點/斷開點溫度值進行了三取二操作。測試中針對三取二模擬了各種情況,當構造三取二操作兩兩相異的情況時,問題出現(xiàn)了。所謂兩兩相異,即溫度值存放的三個地方的值各不一樣。程序中當遇到三取二錯誤時,直接放棄了控溫操作,既沒有采取遙測下報措施,也沒有考慮重要數(shù)據(jù)三取二錯誤后的備份控溫方案。如果當前加熱片處于加熱狀態(tài),而外部也沒有重新進行控溫注數(shù),那么加熱片將一直加熱下去,很可能導致硬件故障。

      因此,三取二操作設計時應注意容錯性的設計,即在三取二操作失效后程序的處理。

      2結束語

      當前的科研生產(chǎn)均提倡“降本增效”,在硬件上增加抗干擾性設計提高成本,因此通過軟件設計提高系統(tǒng)和產(chǎn)品的可靠性已越來越受到科技人員的重視。軟件抗干擾設計方法多種多樣,且都不是單獨使用的,不同的軟件需要根據(jù)實際情況結合實現(xiàn)多種抗干擾手段。設計師在進行抗干擾設計時應考慮全面,使程序做到防錯、容錯、糾錯的全面性,保證單片機系統(tǒng)穩(wěn)定可靠地工作。

      參考文獻:

      [1]于洪洲,程建.51系列單片機軟件抗干擾設計[J].集成電路通訊,2007(6):1-2.

      [2]李子華.MCS-51單片機軟件系統(tǒng)可靠性設計[J].遼寧師專學報,2002(3).

      猜你喜歡
      處理程序看門狗斷點
      高速公路工程變更與計量支付處理程序的優(yōu)化方法
      把他叫醒
      一類無限可能問題的解法
      主導電回路發(fā)生斷點故障判斷方法探討
      基于C++的數(shù)控加工通用后處理程序的開發(fā)應用研究
      企業(yè)危機公關管理問題分析
      一種采用FPGA實現(xiàn)的通用看門狗電路
      大眾科技(2015年11期)2015-11-24 01:57:16
      把它叫醒
      把它叫醒
      地鐵直流系統(tǒng)中框架保護原理及處理程序
      祁东县| 衡阳县| 鄂伦春自治旗| 新蔡县| 凌源市| 都兰县| 长岭县| 福建省| 武功县| 香河县| 湖口县| 扎囊县| 侯马市| 河池市| 临猗县| 广宁县| 阳西县| 安远县| 庆云县| 密云县| 进贤县| 舞钢市| 万载县| 海伦市| 大厂| 冕宁县| 独山县| 寿宁县| 苍南县| 治多县| 弥勒县| 双桥区| 西吉县| 白城市| 双鸭山市| 修文县| 城步| 朝阳市| 班玛县| 苗栗县| 绿春县|