24小時聯系電話:18217114652、13661815404
中文
技術專題
嵌入式系統中的自我測試
嵌入式系統中的自我測試
除非可用內存完全耗盡,否則在嵌入式設計中實施某些自測試功能是值得的。
盡管現代電子產品非??煽?,但它們仍然容易出現故障。嵌入式系統中的故障大致可分為四類:
中央處理器
外設
記憶
軟件錯誤
如果 CPU 出現故障,則往往是硬故障。在這個系統中沒有自檢的可能性。CPU 出現部分故障的可能性很小。當系統中有多個核心時,最好將一個核心分配為“主”,以便它可以監控系統完整性。
移動測試
外設可能會以多種方式出現故障,但其中許多是特定于設備/應用程序的。當設備無法響應其地址時,就會發生陷阱;必須包含一個陷阱處理程序來處理此故障。否則,通信設備通常包括“環回”模式,可以測試傳輸和接收以及相關的中斷。
內存故障隨時可能發生。這種故障可能是暫時的——例如,一個位被經過的宇宙射線翻轉。這種故障通常是無法檢測到的,可能會導致軟件崩潰。因此,適應崩潰恢復是必不可少的。如果沒有收到地址響應,或者位停留在 0 或 1,則可能會出現硬故障。陷阱處理程序處理前者,但后者需要一些特定的測試。全面的內存測試只能在設備啟動時進行。移動測試是有效的。
堆棧保護詞
在設備運行時,可以對單個字節或字執行模式測試,這可能會揭示某些類型的故障。
在現代設備中,軟件是最復雜的組件。即使軟件不會磨損,其復雜性也會導致在開發過程中難以檢測到的故障。好的防御性編碼技術可以幫助預測一些問題。
一般來說,有兩種類型的軟件錯誤:
數據損壞
代碼循環。
數據損壞可能是由指針誤用引起的,這很難檢測或預防,但也可能是數據結構(如數組或堆棧)溢出的結果。插入“保護字”可以幫助在造成任何損壞之前檢測溢出。
代碼循環可以通過精心設計來解決——預防措施如等待設備超時——或者某種監視無響應代碼的看門狗設施(在硬件或軟件中)。