這篇技術文章討論了 B 類安全軟件庫例程,用于檢測單通道微控制器中是否發生故障。這些例程基于 IEC 60730 標準,能夠支持 B 類認證過程。這些例程可以直接與最終用戶的應用程序集成,以測試和驗證控制器的關鍵功能,而不會影響最終用戶的應用程序。本應用筆記還介紹了 B 類安全軟件庫中提供的應用程序編程接口 (API) 函數。可以在啟動或運行時定期調用 B 類安全軟件例程以測試以下組件:
本應用筆記還概述了用于測試外部通信、定時、I/O 外設、模擬 I/O 和模擬多路復用器等組件的各種技術,這些技術不屬于 B 類安全軟件庫的一部分。
IEC 60730 標準概述
IEC 60730 標準定義了確保家用電器中使用的受控設備安全運行的測試和診斷方法。IEC 60730 標準的附錄 H 將軟件分為以下幾類:
- A級
- B級
- C級
B 類安全軟件庫實施屬于 B 類類別的重要測試和診斷方法。這些方法使用各種措施來檢測和響應與軟件相關的故障和錯誤。根據IEC 60730標準,屬于B類功能的控件應具有以下結構之一:
帶功能測試的單通道 在此結構中,功能測試在應用固件執行之前執行。
帶定期自檢的單通道 在此結構中,定期測試嵌入在固件中,并且在固件處于執行模式時定期進行自檢。
雙通道無比較 在此結構中,兩個獨立的方法執行指定的操作。
系統要求
推薦以下系統要求來運行 B 類安全軟件庫: 對于需要獨立時隙監控的測試,系統硬件必須提供至少兩個獨立的時鐘源(例如內部振蕩器、晶振和線頻) )。
B 類安全軟件庫
8 位 B 類安全軟件庫包括 API,旨在通過故障檢測最大限度地提高應用程序的可靠性。這些 API 有助于滿足 IEC 60730 標準合規性。可以使用此庫實現以下測試:
- CPU寄存器測試
- 程序計數器測試
- 不變內存(Flash/EEPROM)測試
- 可變記憶測試
- 時鐘測試
- 使用線路頻率的時鐘測試
在以下部分中,將討論每個測試的測試描述和實現細節。此外,每個部分都列出了執行相應測試所需的 API。
CPU寄存器測試
CPU 寄存器測試執行 IEC 60730 標準定義的功能測試 H.2.16.5。它檢測 CPU 寄存器中的固定故障。這確保寄存器中的位不會停留在值“0”或“1”。CPU 寄存器測試是一種無損測試。該測試執行以下主要任務:
CPU 寄存器和幽靈寄存器的測試方法是,首先將二進制序列(長度取決于體系結構)、010101……然后是 101010……依次寫入寄存器,然后從這些寄存器中讀取值進行驗證。
如果返回值不匹配,測試將返回錯誤代碼。
API 函數
該 API 函數實現了 CPU 寄存器測試:
程序計數器測試
程序計數器 (PC) 測試執行 IEC 60730 標準定義的功能測試 H.2.16.5。PC 保存下一條要執行的指令的地址。該測試執行以下主要任務:
- PC 測試調用位于閃存中不同地址的函數。
- 這些函數重置錯誤標志。
- 在應用程序代碼的許多地方都測試了錯誤標志。
- 如果錯誤標志被清除,則 PC 分支到正確的位置。
API 函數
這個API函數實現了PC測試:
CLASSB_CPUPCTest()
不變內存(Flash/EEPROM)測試
不變存儲器 (Flash/EEPROM) 測試實施由 IEC 60730 標準定義的定期修改校驗和 H.2.19.3.1。它檢測不變存儲器中的單位故障。系統中的不變存儲器,例如閃存和 EEPROM 存儲器,包含在程序執行期間不打算更改的數據。閃存/EEPROM 不變存儲器測試使用循環冗余校驗 (CRC-16) 計算周期性校驗和。用于計算 CRC-16 的 CRC 多項式如下所示。
CRC-16 = 1 1000 0000 0000 0101 = 8005(十六進制)
圖 1 是不變內存測試的流程圖。CRC 功能可用于測試存儲在閃存或 EEPROM 存儲器中的數據的完整性。這是通過計算并返回存儲在函數調用中定義的位置中的數據的 CRC 值來完成的。以下流程圖說明了如何在您的應用程序固件中使用這些功能。
不變記憶測試流程圖
如果系統啟動時 CRC_Flag 設置為 0x00,則計算參考 CRC 校驗和。
參考校驗和存儲在閃存或 EEPROM 存儲器中,CRC 標志設置為 0xFF。
如果 CRC 標志設置為 0xFF,則可以定期調用 CRC16 計算函數。
將步驟 3 計算的校驗和與參考校驗和進行比較。
如果兩個值匹配,則用戶應用程序可以設置狀態位以指示不變存儲器已通過測試并且未發現錯誤。
編輯:hfy
-
mcu
+關注
關注
146文章
17123瀏覽量
350986 -
存儲器
+關注
關注
38文章
7484瀏覽量
163763 -
PIC
+關注
關注
8文章
507瀏覽量
87540
發布評論請先 登錄
相關推薦
評論