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