IEC(國際電工委員會)是由所有國家電工委員會組成的世界性標(biāo)準(zhǔn)化組織,IEC針對家用電器的正常安全運(yùn)行制定了安全標(biāo)準(zhǔn)。
IEC60335安全標(biāo)準(zhǔn)里面定義了多種測試和診斷方法,確保面向家用電器的嵌入式控制硬件和軟件的安全運(yùn)行。IEC60730安全標(biāo)準(zhǔn)主要針對安全和性能、環(huán)境、電能效率及其可再生能力,其標(biāo)準(zhǔn)為硬件及軟件解決方案提供建議。
為此,華芯微特開發(fā)出多款安全特性和軟件開發(fā)包(包括IEC60335安全庫),可幫助大型電器市場的自動化控制制造商滿足IEC60335 CLASSB規(guī)范。
在這里我們以SWM341為例給大家簡單介紹一下在IEC_60335_CLASSB軟件庫。
整體流程
ClassB軟件包程序檢測內(nèi)容分為兩個主要部分:啟動時的自檢和運(yùn)行時的周期自檢,MCU在上電的時候會進(jìn)行復(fù)位啟動,在啟動完成以后會進(jìn)行運(yùn)行自檢。
啟動時檢測
CPU寄存器進(jìn)行自檢操作,如果檢測沒有故障則進(jìn)行看門狗的自檢,如果有故障則進(jìn)行故障的處理。看門狗自檢流程與CPU寄存器自檢的流程一致,后面依次會進(jìn)行FLASH,RAM以及時鐘自檢,啟動自檢完成以后會進(jìn)入程序的主循環(huán)函數(shù)中。
啟動自檢流程如下圖:
CPU啟動時檢測
進(jìn)行CPU寄存器的相關(guān)檢測,主要檢查內(nèi)核標(biāo)志、寄存器和堆棧指針等是否正確。如果發(fā)生錯誤,就會調(diào)用故障安全處理函數(shù)Selftest_fail_handle()。
看門狗啟動時檢測
驗(yàn)證看門狗復(fù)位功能是否正常,保證后續(xù)運(yùn)行中如果因?yàn)槌绦蛴?jì)數(shù)器出現(xiàn)非預(yù)期異常情況導(dǎo)致程序跑飛時可以通過看門狗復(fù)位恢復(fù)。測試通過判斷復(fù)位狀態(tài)寄存器的復(fù)位標(biāo)識來判斷是否測試成功。
時鐘啟動時檢測
啟動階段的時鐘檢測通過內(nèi)部低速時鐘源(LICK)和系統(tǒng)時鐘的交叉測量結(jié)果來判斷。系統(tǒng)時鐘頻率作為基準(zhǔn)頻率,采用外部高速時鐘源(HEXT)或者內(nèi)部高速時鐘源(HICK)。將定時器的時鐘源設(shè)置為LICK,systick設(shè)置為系統(tǒng)時鐘,運(yùn)行systick相同時間,兩次timer當(dāng)前值之間的差值作為測量值與LICK預(yù)期的范圍值進(jìn)行比較。如果測量值超出了LICK預(yù)期范圍值,則測試失敗。
FLASH啟動時檢測
FLASH自檢是存儲器檢測的一部分, 程序中將FLASH數(shù)據(jù)用CRC算法計(jì)算, 將結(jié)果值跟編譯時已存儲在FLASH指定位置的預(yù)先計(jì)算好的CRC值進(jìn)行比較。
RAM啟動時檢測
RAM自檢是存儲器檢測的一部分,對于支持硬件SRAM奇偶校驗(yàn)功能的型號,可以開啟RAM校驗(yàn)功能并且可以跳過該步驟,而對于不支持硬件SRAM奇偶校驗(yàn)功能的型號,則采用March C算法,用值0x00和0xFF逐字交替填充整個RAM并檢查,填充時可以選擇加擾模式(scramble)或者標(biāo)準(zhǔn)模式(standard),加擾模式基本物理單元是4字,下圖單元格內(nèi)的編號代表測試填充的順序。
RAM采用March C算法測試時分6個步驟,前3個循環(huán)按照地址遞增執(zhí)行,后3個循環(huán)按照地址遞減執(zhí)行。測試步驟如下,如果采用March X算法則省略步驟3和4:
·全部范圍寫0x00,按照地址遞增順序執(zhí)行
·檢測是否全部范圍為0x00,然后全部范圍寫0xFF,按照地址遞增順序執(zhí)行
·檢測是否全部范圍為0xFF,然后全部范圍寫0x00,按照地址遞增順序執(zhí)行
·檢測是否全部范圍為0x00,然后全部范圍寫0xFF,按照地址遞減順序執(zhí)行
·檢測是否全部范圍為0xFF,然后全部范圍寫0x00,按照地址遞減順序執(zhí)行
·檢測是否全部范圍為0x00,按照地址遞減順序執(zhí)行
控制流啟動時檢測
控制流檢測也屬于程序計(jì)數(shù)器檢測的一部分,啟動階段控制流檢測主要分為了兩個節(jié)點(diǎn),其中一個檢測節(jié)點(diǎn)是在RAM檢測之前,通過控制流變量值判斷是否前面所有測試項(xiàng)都正確完成,另外一個節(jié)點(diǎn)是在RAM檢測后,主要是運(yùn)行階段檢測必須操作的流程的配置,比如CRC參考變量初始化、棧溢出pattern設(shè)置。
運(yùn)行時周期檢測
在主循環(huán)中會定期的進(jìn)行自檢操作,在進(jìn)行自檢操作的時候會依次進(jìn)行如下操作:CPU寄存器的自檢、棧自檢、時鐘自檢、FLASH自檢、并設(shè)置定時器定時進(jìn)行RAM自檢,如果在自檢的過程中出現(xiàn)故障則會進(jìn)行故障的處理。
CPU運(yùn)行時檢測
CPU運(yùn)行時周期自檢跟啟動時的自檢類似,只是不檢測內(nèi)核標(biāo)志和堆棧指針。
看門狗運(yùn)行時檢測
運(yùn)行時需要定期喂狗保證系統(tǒng)正常運(yùn)行, 看門狗的刷新部分放置在每次檢測最后部分。
時鐘運(yùn)行時檢測
啟動階段的時鐘檢測通過內(nèi)部低速時鐘源(LICK)和系統(tǒng)時鐘的交叉測量結(jié)果來判斷。系統(tǒng)時鐘頻率作為基準(zhǔn)頻率,采用外部高速時鐘源(HEXT)或者內(nèi)部高速時鐘源(HICK)。將定時器的時鐘源設(shè)置為LICK,systick設(shè)置為系統(tǒng)時鐘,運(yùn)行systick相同時間,兩次timer當(dāng)前值之間的差值作為測量值與LICK預(yù)期的范圍值進(jìn)行比較。如果測量值超出了LICK預(yù)期范圍值,則測試失敗。
FLASH CRC運(yùn)行時檢測
運(yùn)行時進(jìn)行Flash CRC的自檢,因?yàn)闄z測范圍不同耗時不同,如果一次計(jì)算檢測全部范圍CRC可能耗時過長,影響正常應(yīng)用部分的執(zhí)行,所以可以根據(jù)用戶應(yīng)用程序大小配置分段CRC計(jì)算,當(dāng)計(jì)算到最后一段范圍時,再進(jìn)行CRC值比較,如果不一致則測試失敗。
棧邊界運(yùn)行時檢測
可驗(yàn)證尋址和數(shù)據(jù)路徑測試相關(guān),定義特殊固定值的Magic Pattern數(shù)組,放置在棧區(qū)域最底部地址,通過運(yùn)行中檢測Magic Pattern數(shù)組完整性來判斷棧是否溢出。如果原始Pattern被破壞,則表明棧溢出測試失敗,調(diào)用故障安全程序。
這一區(qū)域根據(jù)設(shè)備及應(yīng)用有不同的配置。用戶必須為堆棧定義足夠的區(qū)域,并保證pattern正確放置。下圖是程序中RAM的簡要分配圖,其中灰色部分是相比較于常規(guī)應(yīng)用,支持自檢需要額外添加的部分。
局部RAM運(yùn)行時檢測
運(yùn)行時的RAM自檢是在systick中斷函數(shù)中進(jìn)行的。因?yàn)檫\(yùn)行中不允許破壞應(yīng)用部分RAM,所以測試只覆蓋分配給CLASS B變量的那部分內(nèi)存。測試流程方法概要描述如下:
·測試根據(jù)systick時基分批次進(jìn)行,每次測試按照CLASS B部分4個字的區(qū)域偏移,為保障耦合故障覆蓋率,每次測試的實(shí)際內(nèi)存塊還包括測試區(qū)域前后各1個相鄰字,總共6個字。
·首先將待測試內(nèi)存塊(RAM block)的數(shù)據(jù)存儲到專門用于測試過程中臨時保存數(shù)據(jù)的緩沖塊(buffer block)
·然后跟啟動時檢測RAM類似, 對測試內(nèi)存塊(RAM block)采用March C算法測試,同樣可以選擇加擾模式(scramble)或者標(biāo)準(zhǔn)模式(standard)
·測試完成后將緩沖塊(buffer block)中保存的數(shù)據(jù)恢復(fù)至測試內(nèi)存塊(RAM block)。
工程配置
Keil中添加bat文件
添加ini文件
分散加載文件配置
編譯結(jié)果
運(yùn)行結(jié)果
以上是本次介紹的IEC_60335_CLASSB軟件庫,如需更多了解SWM芯片信息請聯(lián)系華芯微特技術(shù)人員。
來源:華芯微特32位MCU
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理
審核編輯 黃宇
-
mcu
+關(guān)注
關(guān)注
146文章
16989瀏覽量
350306 -
寄存器
+關(guān)注
關(guān)注
31文章
5317瀏覽量
120005 -
RAM
+關(guān)注
關(guān)注
8文章
1367瀏覽量
114530 -
檢測
+關(guān)注
關(guān)注
5文章
4437瀏覽量
91370 -
軟件庫
+關(guān)注
關(guān)注
0文章
15瀏覽量
7761
發(fā)布評論請先 登錄
相關(guān)推薦
評論