<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 提高單片機(jī)應(yīng)用系統(tǒng)可靠性的軟件技術(shù)

          提高單片機(jī)應(yīng)用系統(tǒng)可靠性的軟件技術(shù)

          作者: 時(shí)間:2012-03-21 來源:網(wǎng)絡(luò) 收藏

          1 設(shè)計(jì)模型與概述

          本文引用地址:http://www.ex-cimer.com/article/171822.htm

          設(shè)計(jì)模型表達(dá)了從激勵(lì)到響應(yīng)的唯一性過程。設(shè)計(jì)模型如圖1所示,按照可靠性設(shè)計(jì)模型,軟件設(shè)計(jì)的主要任務(wù)是保證在過程空間中,程序按照給定順序有序地運(yùn)行。軟件設(shè)計(jì)的可靠性保障是軟件設(shè)計(jì)中的本質(zhì)可靠性與可靠性控制。它保障了最少的軟件錯(cuò)誤以及在軟件出錯(cuò)后仍保證系統(tǒng)能正常運(yùn)行或安全運(yùn)行。

          2 本質(zhì)可靠性的軟件設(shè)計(jì)

          2.1 最大限度地減少錯(cuò)誤及缺陷

          在應(yīng)用軟件中,唯一的有序性(編程指定的)與無限的激勵(lì)因素,導(dǎo)致了軟件測試仿真的不完全性,其結(jié)果是軟件的缺陷與軟件并存。軟件的缺陷與錯(cuò)誤通??煞譃轱@性與隱性兩大類。顯性缺陷與錯(cuò)誤發(fā)生在程序正常運(yùn)行中。這些缺陷和錯(cuò)誤大部分都可通過仿真調(diào)試進(jìn)行糾正;隱性缺陷與錯(cuò)誤通常都在系統(tǒng)非正常運(yùn)行中顯露出來。容錯(cuò)能力弱的系統(tǒng)存在較多的隱性錯(cuò)誤。

          2.2 要有足夠的時(shí)序余度

          時(shí)序是程序設(shè)計(jì)中必須考慮的問題。在應(yīng)用程序設(shè)計(jì)應(yīng)考慮的時(shí)序有系統(tǒng)復(fù)位時(shí)序、狀態(tài)時(shí)序、器件工作時(shí)序及總線運(yùn)行時(shí)序。

          (1)系統(tǒng)復(fù)位時(shí)序

          ①M(fèi)CU復(fù)位時(shí)序要求。MCU有上電復(fù)位(冷啟動(dòng)復(fù)位,如開機(jī))與信號復(fù)位(熱啟動(dòng),如按鍵復(fù)位)。上電復(fù)位有電源建立及時(shí)鐘系統(tǒng)起振過程和電路狀態(tài)復(fù)位。信號復(fù)位是在MCU工作狀態(tài)下的復(fù)位,沒有電源建立及時(shí)鐘起振過程的時(shí)序要求。

          中多個(gè)復(fù)位端的時(shí)序要求。當(dāng)一個(gè)系統(tǒng)中,除外,還有其他可編程外圍器件,如8155有復(fù)位要求時(shí),系統(tǒng)中便出現(xiàn)了多個(gè)復(fù)位控制要求。解決系統(tǒng)中多個(gè)器件復(fù)位時(shí)序的原則是:保證MCU在系統(tǒng)中最后復(fù)位或MCU對外圍可編程器件的初始化,必須確保在該器件復(fù)位后進(jìn)行。

          ③程序設(shè)計(jì)中的復(fù)位處理原則。

          ·MCU上電后延遲片刻,確保外圍器件復(fù)位完畢,再對外圍器件初始化。

          ·在確保MCU對有復(fù)位控制端口的外圍器件初始化是完全初始化操作時(shí),可將外圍器件的復(fù)位端接成非復(fù)位狀態(tài)。

          (2)器件工作時(shí)序

          器件工作時(shí)序是器件應(yīng)用程序設(shè)計(jì)的基礎(chǔ)。程序設(shè)計(jì)中必須保證時(shí)序工作的正確性,而且要有足夠的余度。在考慮器件運(yùn)行時(shí)序時(shí),MCU的操作必須保證時(shí)序信號的銜接控制和時(shí)序信號的時(shí)序余度。

          (3)狀態(tài)轉(zhuǎn)換時(shí)序

          在狀態(tài)轉(zhuǎn)換的程序設(shè)計(jì)中,應(yīng)根據(jù)狀態(tài)轉(zhuǎn)換的時(shí)序特點(diǎn),進(jìn)行精心的時(shí)序控制設(shè)計(jì)。通常,MCU本身的狀態(tài)轉(zhuǎn)換,如復(fù)位、ID、PD方式的進(jìn)入或退出,片內(nèi)外圍集成電路單元的關(guān)斷與運(yùn)行,都有自動(dòng)監(jiān)視、自動(dòng)運(yùn)行管理功能。程序設(shè)計(jì)只須按MCU數(shù)據(jù)手冊及指令系統(tǒng)的操作要求進(jìn)行即可。對于有較長過渡時(shí)間的外圍狀態(tài)轉(zhuǎn)換過程,可采取足夠的延時(shí)等待或設(shè)置提前轉(zhuǎn)換狀態(tài)的辦法。

          (4)總線時(shí)序

          應(yīng)用系統(tǒng)中,有并行總線與串行總線。串行總線中又有通信總線和擴(kuò)展總線。這些總線在規(guī)范化操作時(shí),其時(shí)序由數(shù)據(jù)通信協(xié)議保證。在非規(guī)范運(yùn)行,例如在虛擬總線方式下,其虛擬總線運(yùn)行的可靠性在于時(shí)序的準(zhǔn)確模擬。在并行總線中要保證讀、寫操作指令運(yùn)行下的讀、寫時(shí)序;同步串行總線要保證時(shí)鐘線控制下的同步運(yùn)行時(shí)序;串行異步時(shí)序則要考慮波特率對數(shù)據(jù)傳送的影響。

          2.3 足夠的容錯(cuò)設(shè)計(jì)

          (1)超時(shí)管理的容錯(cuò)設(shè)計(jì)

          在系統(tǒng)程序中,除了專門設(shè)置的循環(huán)等待程序外,系統(tǒng)中的許多操作都是時(shí)間有界的。由于非正常激勵(lì)的入侵,導(dǎo)致任務(wù)操作無法結(jié)束,形成超時(shí)現(xiàn)象。解決措施:在程序設(shè)計(jì)中采用超時(shí)管理辦法,使程序從非正常激勵(lì)造成的“死機(jī)”中退出。

          (2)超界管理的容錯(cuò)設(shè)計(jì)

          系統(tǒng)中實(shí)際運(yùn)行的參數(shù)都是有界的。系統(tǒng)運(yùn)行中要考慮的超界管理參數(shù)有:

          ①物理參數(shù)。這些參數(shù)主要是系統(tǒng)的輸入?yún)?shù),它包括激勵(lì)參數(shù)、采集處理中的運(yùn)行參數(shù)和處理結(jié)束的結(jié)果參數(shù)。合理設(shè)定這些邊界,將超出邊界的參數(shù)都視為非正常激勵(lì)或非正常響應(yīng)進(jìn)行出錯(cuò)處理。

          ②資源參數(shù)。這些參數(shù)主要是系統(tǒng)中的電路、器件、功能單元的資源,如存儲器容量、存儲單元長度、堆棧深度。在程序設(shè)計(jì)中,對資源參數(shù)不允許超界使用。

          ③應(yīng)用參數(shù)。這些應(yīng)用參數(shù)常表現(xiàn)為一些器件、功能單元的應(yīng)用條件。如E2PROM的擦寫次數(shù)與數(shù)據(jù)存儲時(shí)間等應(yīng)用參數(shù)界限。

          ④過程參數(shù)。指系統(tǒng)運(yùn)行中的有序變化的參數(shù)。

          (3)有序化的容錯(cuò)設(shè)計(jì)

          有序化是程序正常運(yùn)行的重要標(biāo)志,是程序設(shè)計(jì)人員賦予的。有序化的容錯(cuò)設(shè)計(jì)是要保證在眾多的非正常激勵(lì)和出現(xiàn)非正常響應(yīng)時(shí),要最大限度地保證原來程序設(shè)計(jì)時(shí)給定的有序的正常程序操作。

          3 可靠性控制的軟件設(shè)計(jì)

          3.1 噪聲失敏控制技術(shù)

          (1)噪聲失敏與噪聲失敏率

          噪聲失敏是利用CPU停止運(yùn)行或關(guān)閉MCU外圍電路,使其對外界噪聲干擾失去響應(yīng)能力的可靠性控制技術(shù)。噪聲失敏率NTOUT是在實(shí)際系統(tǒng)中,采取噪聲控制后,系統(tǒng)或電路對噪聲失敏的時(shí)間概率,

          NTOUT可由下式估算:

          TLOP為系統(tǒng)運(yùn)行總時(shí)間,通常為系統(tǒng)開機(jī)時(shí)間;TOP為MCU中CPU的運(yùn)行時(shí)間或電路系統(tǒng)的工作狀態(tài)時(shí)間;

          TLOP-TOP為單片機(jī)CPU停止運(yùn)行或外圍電路被關(guān)斷的時(shí)間。

          (2)噪聲失敏控制的

          ①按噪聲失敏設(shè)計(jì)最有效的程序結(jié)構(gòu)。盡量減少應(yīng)用程序中的循環(huán)等待;盡量集中安排任務(wù)和任務(wù)中的有效運(yùn)行時(shí)間;及時(shí)關(guān)斷不在有效運(yùn)行的電路單元。

          ②MCU的休眠與掉電。通常,與CPU停止運(yùn)行的低功耗方式主要有關(guān)斷CPU時(shí)鐘的休閑ID方式和關(guān)斷系統(tǒng)時(shí)鐘的掉電PD方式。

          ③外圍電路關(guān)斷。外圍電路可通過電源供電的關(guān)斷控制。具有關(guān)斷功能的外圍電路,可采取引腳控制關(guān)斷或編程控制的辦法,使之進(jìn)入失敏狀態(tài)。

          3.2 程序失控的回復(fù)技術(shù)

          (1)程序失控后的快速凍結(jié)與回復(fù)

          ①WDT(Watch Dog Timer)的失控回復(fù)。如圖2所示。在程序失控后,程序跳逸出正常路徑,無法對WDT清零,致使WDT溢出。溢出端輸出信號使MCU復(fù)位。

          ②指令的失控恢復(fù)。如89C51中采用LJMP0000H的軟件陷阱時(shí),將輸入陷阱的失控程序強(qiáng)行跳轉(zhuǎn)到復(fù)位入口0000H處。

          (2)失控回復(fù)后的處理

          ①回復(fù)狀態(tài)檢測?;貜?fù)是指程序失控后又轉(zhuǎn)回到正常路徑的起點(diǎn),即復(fù)位入口地址。程序失控回復(fù)后要進(jìn)行回復(fù)狀態(tài)檢測,以判斷是上電復(fù)位還是WDT復(fù)位或指令拉回。通常采用的檢測方法是利用上電標(biāo)志。有些單片機(jī)內(nèi)沒有上電標(biāo)志,可利用上電復(fù)位時(shí)SRAM的隨機(jī)態(tài)與信號復(fù)位或程序拉回時(shí),SRAM中數(shù)據(jù)不變的特點(diǎn)來判別。系統(tǒng)上電后,在SRAM區(qū)寫入特殊上電標(biāo)志數(shù)據(jù)。待回復(fù)后先檢查上電標(biāo)志是否存在,若存在即為WDT復(fù)位或指令拉回。

          ②回復(fù)后的初始化處理。圖3是上電復(fù)位與程序失控回復(fù)初始化處理框圖。0000H是MCU的復(fù)位入口,程序啟動(dòng)后,首先判斷是上電復(fù)位(冷啟動(dòng)),還是程序失控回復(fù)(熱啟動(dòng))。上電復(fù)位是開機(jī)操作,要建立上電標(biāo)志,并進(jìn)行系統(tǒng)的完全初始化。程序失控回復(fù)應(yīng)進(jìn)行相關(guān)資源的檢查與修復(fù),以防止運(yùn)行出錯(cuò)。另外根據(jù)系統(tǒng)的特點(diǎn),需要保留一些過程數(shù)據(jù)。

          不得進(jìn)行完全初始化時(shí),只進(jìn)行部分初始化。

          3.3 安保、自檢與修復(fù)技術(shù)

          在高可靠性等級的單片機(jī)應(yīng)用系統(tǒng)中,軟件設(shè)計(jì)中應(yīng)有安保、自檢與自修復(fù)軟件。

          (1)安保程序設(shè)計(jì)。安保設(shè)計(jì)要求有非正常響應(yīng)時(shí),對象的完全性保障和系統(tǒng)的可持續(xù)運(yùn)行。為了能在系統(tǒng)出現(xiàn)非正常響應(yīng)時(shí),立即獲得安全保護(hù),應(yīng)設(shè)置關(guān)鍵部位的失控檢測,如I/O口輸出狀態(tài)實(shí)時(shí)檢測;機(jī)器人軌跡檢測等。檢測到非正常響應(yīng)后,應(yīng)快速進(jìn)入安保狀態(tài)設(shè)置,首先使系統(tǒng)進(jìn)入安全態(tài),然后保護(hù)系統(tǒng)的關(guān)鍵資源不受侵害,以保證系統(tǒng)具有后續(xù)運(yùn)行的操作的能力。

          (2)實(shí)際系統(tǒng)中的自檢。在實(shí)際的單片機(jī)應(yīng)用軟件中,應(yīng)充分利用其智能化特點(diǎn),設(shè)置各種自檢程序以其可靠性與安全性。通常,應(yīng)用系統(tǒng)中的自檢程序有自診斷,失控后的回復(fù)檢查和程序關(guān)鍵處的查驗(yàn)。程序自診斷通常是開機(jī)后對系統(tǒng)的例行檢查;失控回復(fù)后的檢查重點(diǎn)是數(shù)據(jù)區(qū),I/O狀態(tài),SFR狀態(tài),外圍電路的狀態(tài)等。程序關(guān)鍵處的查驗(yàn)有界限檢查、冗余性檢查與邏輯性檢查。

          3.4 系統(tǒng)的結(jié)構(gòu)冗余

          由于系統(tǒng)結(jié)構(gòu)的簡化,電路的集成趨勢,器件成本的下降,邏輯控制能力的,在關(guān)鍵部位可采取冗余的備份結(jié)構(gòu)來系統(tǒng)的可靠性。圖4為實(shí)際應(yīng)用中某監(jiān)控系統(tǒng)的具有獨(dú)立仲裁器的雙機(jī)冗余系統(tǒng)。仲裁器的輸入邏輯接收兩個(gè)系統(tǒng)的輸出數(shù)據(jù)與故障信息;輸出邏輯接收比較器A、B的比較結(jié)果和故障處理信號發(fā)生器的切換信號。仲裁器的故障判斷原理如下:對兩個(gè)同步工作系統(tǒng)輸出的數(shù)據(jù)進(jìn)行比較,比較結(jié)果一致表明兩個(gè)系統(tǒng)均無故障;比較結(jié)果不同表明,必有一個(gè)系統(tǒng)出現(xiàn)故障,然后強(qiáng)令兩個(gè)系統(tǒng)進(jìn)入自檢程序,用預(yù)先設(shè)定的參數(shù)進(jìn)行測試,并與預(yù)定結(jié)果比較,相符者為正常開機(jī),不符者為故障機(jī)。若為暫時(shí)性故障,重新復(fù)位即可排除,若為永久性故障則輸出故障信號并進(jìn)入單機(jī)運(yùn)行。

          4 結(jié)束語

          可靠性是一個(gè)綜合性、經(jīng)驗(yàn)性較強(qiáng)的問題,是單片機(jī)控制器能否成功應(yīng)用的關(guān)鍵問題。上述提高單片機(jī)應(yīng)用系統(tǒng)可靠性的與方法應(yīng)用于多項(xiàng)應(yīng)用工程,使多項(xiàng)工程在高可靠性硬件基礎(chǔ)上,保障了最少的軟件錯(cuò)誤以及在軟件出錯(cuò)后仍保證系統(tǒng)正常運(yùn)行或安全運(yùn)行。

          參考文獻(xiàn):
          [1]楊華舒,復(fù)濤.單片計(jì)算機(jī)系統(tǒng)抗干擾的軟件途徑[J].電子技術(shù)應(yīng)用,2001,(3).
          [2]何立民.單片機(jī)高級教程[M].北京:北京航空航天出版社,2001.



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();