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