一個準B類微控制器平臺
從2007年10月起,為防止家電在出現(xiàn)故障時對人身造成傷害,所有新上市的家電產(chǎn)品都必須符合IEC60335標準,新標準首次啟用了軟件檢測和軟件分類的概念。根據(jù)軟件類別(A/B/C),新標準要求在上電時檢測微控制器組件(如CPU寄存器或存儲器),并在運行期間監(jiān)視這些組件的性能,這類似于工業(yè)或醫(yī)療設(shè)備市場上,按照SIL2/SIL3級標準、IEC61508或UL1998標準對安全至關(guān)重要產(chǎn)品件進行的評測。
本文引用地址:http://m.butianyuan.cn/article/167057.htm根據(jù)設(shè)備在發(fā)生故障時的危險程度,新標準把檢測軟件分為三個類別。如果家電的安全性與軟件無關(guān),則屬于A類設(shè)備。例如,室內(nèi)溫度調(diào)節(jié)器或照明控制開關(guān)就屬于A類。相反,如果軟件被用于預(yù)防特殊的災(zāi)害,如電子點火燃氣灶的防爆功能,這個軟件就被評定為C類軟件。本文不討論第二種情況,因為這一類別的系統(tǒng)可能需要多個微控制器,這超出了本文的范圍;其次,因為大多數(shù)家電的電子控制開關(guān)都必須有不安全操作防護功能,這類產(chǎn)品屬于B類。例如,洗衣機的電控門鎖或洗碗機的帶電機過熱檢測功能的泵驅(qū)動器就屬于這種情況。
對于B類待測設(shè)備,IEC60335標準讓我們參考另一個標準IEC60730,因為該標準涵蓋了全部的電子控制開關(guān)類產(chǎn)品。該標準的附件H的表H.11.12.7列出了B類和C類軟件需要測試的微控制器組件、待測故障和達標數(shù)值。
通過微控制器內(nèi)1部硬件或利用軟件方法,可以直接進行這些測試過程。意法半導(dǎo)體的基于Cortex-M3內(nèi)核的32位微控制器STM32是一款準B類產(chǎn)品,內(nèi)置硬件能夠監(jiān)視CPU的程序計數(shù)器中止、異常時鐘頻率和閃存內(nèi)容完整性。
該標準提出一個“獨立時隙監(jiān)視”概念,以防CPU在PC機發(fā)生故障時失控。大多數(shù)微控制器都內(nèi)置一個看門狗定時器。然而,承擔(dān)這個責(zé)任的看門狗必須是獨立的電路。基于這個原因,STM32有兩個看門狗:第一個看門狗定時器是一個普通的窗式看門狗,時鐘信號來自主時鐘源;第二個看門狗由一個獨立的內(nèi)部振蕩器驅(qū)動,從閃存內(nèi)的一個可選字節(jié)開始運行。這樣設(shè)計可確保在晶振發(fā)生故障時,不管時鐘電路配置如何,至少有一個看門狗能夠繼續(xù)工作。
圖1是STM32的時鐘電路的簡圖,描述了各種時鐘源及與芯片其它部分的連接方法。
實時時鐘的信號源可以是內(nèi)部低速(LSI)阻容振蕩器。通過比較外部預(yù)期頻率與時鐘組件要求的內(nèi)部頻率,這個特性提供了一個監(jiān)視外部時鐘的方法。在系統(tǒng)級,這個方法可以節(jié)省一個50Hz/60Hz交流電源零交叉檢測電路的成本,應(yīng)用系統(tǒng)啟動雙向晶體管需要這個電路的情況除外。
最后,STM32還內(nèi)置一個32位的硬件CRC計算單元,這個特性可以加快閃存數(shù)據(jù)完整性檢查,并把CPU負荷(CPU在運行期間處理的任務(wù)量)降到可以忽略不計的水平。
如果用硬件方式執(zhí)行測試程序,大多數(shù)測試都需要一個相當(dāng)大的芯片面積。例如,RAM內(nèi)存的單一位查錯需要在所有數(shù)據(jù)字上增加一個奇偶校驗位。STM32微控制器拋棄了這個方案,因為它可能會影響芯片的成本效益,而且,只用軟件就能輕松地實現(xiàn)測試功能。因此,意法半導(dǎo)體為用戶免費提供一個自診斷固件庫,固件庫含有以下檢測用C模塊:CPU寄存器檢測;時鐘監(jiān)視;RAM功能檢查;ROM校驗合完整性檢查;看門狗自檢和棧區(qū)溢出監(jiān)視(即便標準對此未提出明確要求,這個功能也能提高檢錯的整體覆蓋率)。
現(xiàn)在討論其中一個檢測模塊,RAM檢測模塊有助于了解B類軟件的限制性要求。這個標準要求定期檢測RAM的DC故障(如停滯或耦合故障)。March C算法能檢測出所有這些錯誤,而且占用通道的數(shù)量很有限。不過,為了提高能效,它要求考慮存儲器的物理實現(xiàn)方式。STM32有一個邏輯對物理尋址加擾功能。Cortex-M3內(nèi)核具有強大的寄存器陣列,無需使用RAM存儲器單元即可在算法中插入擾碼(這項檢測具有破壞性,必須驗證整個存儲器陣列)。作為一項附加要求,這項檢測必須定期進行。如果應(yīng)用設(shè)備通過系統(tǒng)加電然后使用較短的一段時間,則系統(tǒng)引導(dǎo)后的檢測可視為定期測試。相反,如果應(yīng)用設(shè)備保持上電狀態(tài),則必須在運行期間重復(fù)檢測,這樣,情況變得更加復(fù)雜:RAM測試必須透明,因為測試與應(yīng)用軟件正在占用的存儲單元有關(guān)。測試操作原理如圖2所示。
固件庫為運行時測試提供一套不同的C函數(shù)。必須在優(yōu)先權(quán)最高的中斷例程中執(zhí)行C函數(shù),為了避免CPU負載過大,影響實時響應(yīng)性能,固件庫還提供了多個可選特性。用戶可以選擇March C或March X算法。對于有限的覆蓋損耗,這兩種算法的速度略微快一些。在一次測試中的待測存儲單元的數(shù)量可以在報頭文件內(nèi)進行修改,這樣,中斷例程的時長可以微調(diào)到幾納秒的水平。
這個實例證明,像這樣一個固件庫,在開發(fā)時間上能給客戶帶來巨大好處。同樣地,還要在封裝過程中做類似的測試(通常是CPU測試,C語言幾乎不準許直接處理內(nèi)核寄存器和標志信號);隨固件庫一起提供給客戶的針對封裝優(yōu)化的例程不需要客戶學(xué)習(xí)Cortex-M3指令集。
除這些單獨測試外,當(dāng)新建一個項目時,自診斷固件還提供一個B類軟件參考框架,包括開發(fā)工具工作室、修改的矢量表和用于處理A類和B類變量的自定義鏈接器腳本文件。在復(fù)位矢量取用后,引導(dǎo)序列立即開始執(zhí)行,并在應(yīng)用啟動前完成全部必要的測試(CPU、看門狗、時鐘監(jiān)視、RAM和閃存測試),引導(dǎo)序列可以原樣重復(fù)再用。測試完成后,這個安全引導(dǎo)序列立即返回到編譯器C的啟動入口點,這樣從開發(fā)工具的角度看,所有的初始測試都是完全透明的(在數(shù)據(jù)自動初始化前驗證RAM)。使用一種計數(shù)器方法監(jiān)視程序序列本身,這樣可以驗證是否所有的測試都被執(zhí)行過。
固件庫不包括H.11.12.7表中的每一個測試項目。有些只與帶外部存儲器的系統(tǒng)相關(guān)(有關(guān)數(shù)據(jù)通道的第五部分)或ASIC/門陣列(有關(guān)定制芯片的第9部分)相關(guān)。有些檢查與應(yīng)用有關(guān):關(guān)于外部通信接口的第6部分、關(guān)于中斷控制的第2部分和關(guān)于輸入輸出外設(shè)的第7部分。下面快速了解一下如何測試中斷和輸入輸出電路。
如果需要監(jiān)視中斷信號傳輸速率,并檢測“無中斷信號”或“中斷過于頻繁”,交叉檢查幾個獨立的時基是一個不錯的解決方案。實現(xiàn)這種方法相當(dāng)?shù)厝菀缀秃唵?,但是每種情況都需要逐一定制,具體設(shè)置取決于被服務(wù)的ISR的數(shù)量及其頻率。基于這個原因,固件庫中不包含這種方法。
對于輸入輸出外設(shè),一個B類軟件必須檢測數(shù)字輸入輸出和模擬通道上的任何故障。這項檢測屬于假設(shè)性檢測。以一個加熱元器件為例,電源由一個雙向晶閘管控制,溫度由一個連接模數(shù)轉(zhuǎn)換器的負溫度系數(shù)(NTC)電阻器調(diào)節(jié)。如果雙向晶閘管導(dǎo)通而溫度沒有上升,這表示數(shù)字輸出或雙向晶閘管已損壞,或者模數(shù)轉(zhuǎn)換器工作不正常。無論如何,B類軟件必須檢測這些錯誤條件,并采取相應(yīng)的處理辦法。
固件庫還配備技術(shù)文檔和一個很有用的基于RS-232的Verbose模式。這個固件接受了歐洲測試機構(gòu)VDE在真實條件下的現(xiàn)場測試,并獲得了該機構(gòu)的測試認證。STM32的自診斷例程通過了IEC60335-1認證。如果這些模塊在使用前不做任何修改,并按照ST的集成指導(dǎo)原則使用,這些模塊不需要再要重新評估,從而可以簡化最終應(yīng)用的認證過程,縮短產(chǎn)品上市時間,降低開發(fā)成本。
STM8系列8位微控制器也定位于家電市場,同樣集成了雙看門狗定時器和失效保護電路,其自診斷例程于2008年2月通過VDE的測試認證。
評論