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