助力採用MCU的自主系統實現自主安全性

電子工程世界 發佈 2023-03-28T01:12:44.524349+00:00

人工智慧(AI)和機器學習(ML)技術在自主性日益增強的系統中的應用越來越普遍,這將提高各行各業對更智能的安全系統的要求。關注重點已經從節約成本轉向給用戶帶來便利性和安全性。

人工智慧(AI)和機器學習(ML)技術在自主性日益增強的系統中的應用越來越普遍,這將提高各行各業對更智能的安全系統的要求。關注重點已經從節約成本轉向給用戶帶來便利性和安全性。這需要一個完整的功能安全(FuSa)層,其中包括安全協處理器與可信的輸入/輸出控制器,兩者協同工作來保護系統。單片機(MCU)為實現這些安全協處理器提供了低成本的解決方案,是當今新一代自主系統的核心。


自主安全功能和規範


安全協處理器可以執行部署的ML模型,這種模型用於接收視頻、音頻、環境和操作員數據等外部數據流,而在某些情況下,也可以同時接收所有這些數據流。這些數據流必須具有固有的可信度。


同樣重要的是,安全協處理器必須信任它們為電機、繼電器、指示器和其他執行器產生的輸出狀態的真實再現。如果發生故障,主處理器也應該能夠依靠這些輸入/輸出(邊帶)控制器快速做出明智的決策。


使用MCU作為安全協處理器


在全面的開發生態系統的支持下,8位和32位MCU主要用於四大功能安全領域,業內為此制定了下列工業標準規範:


• ISO 26262:汽車安全完整性等級(ASIL),適用於汽車應用

• IEC 61508:安全完整性等級(SIL),適用於工業應用

• IEC 60730:家用電器功能安全標準

• IEC 60730:醫療設備功能安全標準


圖1. 工業機器人正在焊接大型重物


開發工具生態系統有兩個重要的後端要求。第一個要求是在開發過程中以及在編譯成機器碼過程中採用穩健的編碼。使用功能安全編譯器可滿足此要求,這些編譯器通過TÜV SÜD(一家國際認可的測試機構)等組織獲得ISO或IEC功能安全標準認證。第二個後端功能是詳細分析在一個典型的測試周期中,哪些代碼被執行,哪些代碼被遺漏。這需要一個代碼覆蓋率分析插件。


自主安全功能的工作原理


與外界的主要交互是通過硬體層實現的,首先需要支持FuSa的MCU(位於邊緣)提供的直接傳感器和執行器接口。請參見下面的圖2。

圖2. 8位單片機的自主安全功能


主要功能包括:


欠壓檢測(BOD)


擁有理想電源的工作環境十分少見。微波爐和雷射印表機會導致燈光閃爍,大型電動工具會觸發斷路器。自主系統必須提前預知其電源要發生故障,從而可以啟用備用電源,或者設置關鍵數據和輸出狀態以確保乾淨的掉電。


這些MCU中的BOD電路可以持續監視電源電壓,並以兩種特定方式對下降的電壓作出反應。首先,當電壓超過某個可選閾值時,電壓監視(VLM)功能將觸發中斷,從而在超過實際BOD電壓閾值之前立即執行緊急關斷任務。超過BOD電壓後,設備將保持在復位狀態,直到消除此條件。同時,也可以確定復位事件的原因,以確保採取適當的恢復策略,這可能與第一次的上電周期不同。


窗口化看門狗定時器


現代MCU使用看門狗定時器作為故障恢復機制,旨在終止無限循環(又稱「自旋鎖」)條件,這種條件除了採取嚴厲的措施外沒有任何解決方法。早期版本設置了以秒或毫秒為單位的超時閾值,然後需要在達到此閾值之前對運行代碼進行某種類型的「刺激」。確認後,超時閾值重置,倒計時重新開始。懶惰的程式設計師使用周期性中斷服務程序來更新定時器,但是即使系統的其他部分卡在某個無限循環中,這些程序仍會自行繼續執行,不會通過系統復位來解決這種情況。


窗口看門狗定時器通過允許指定看門狗服務窗口解決了部分問題。這樣一來,看門狗定時器的服務速度不能太慢,也不能太快。這使得依賴已知執行時間短於最大閾值的代碼變得更加困難。


循環冗餘校驗(CRC)代碼掃描


CRC代碼掃描外設可確保已編程代碼映像的完整性。它比單純的校驗和更加強大,因為校驗和很容易被數學操作欺騙。可將特定的MCU硬體模塊配置為在程序存儲器的自舉程序部分、應用程式部分或整個快閃記憶體陣列上運行掃描。然後,外設會將其CRC結果與附加在指定代碼空間末尾的正確校驗和進行比較。如果這兩個16位數字匹配,則證明代碼空間未遭到修改。可將匹配失敗配置為產生不可屏蔽中斷,以進一步處理該問題。


實際輸入路徑通用輸入/輸出(GPIO)外設


在早期的MCU中,如果將GPIO引腳配置為輸出,驗證引腳電壓(即5V)與控制位值(即1)相匹配的惟一方法是使用配置為輸入的單獨GPIO引腳來讀取電壓。配置為輸出的GPIO引腳不能回讀實際電壓,而只能回讀寫入的值;因此,「輸入」值始終保持一致。


實際輸入路徑GPIO單元可以提供到離散的內部輸入寄存器的獨立電氣路徑,從而反映引腳上設置的實際電平。雖然該電平只能以邏輯1或邏輯0的方式讀取,但它仍可提供足夠的反饋來驗證寫入輸出控制寄存器的內容。這兩個值應始終保持一致。如果兩者之間存在差異,則表明該特定GPIO引腳上存在短路或開路情況,需要適當的處理。


具有這些功能的MCU可為完整的FuSa層奠定基礎。隨著基於AI/ML的自動化將關注重點從系統生產和維護成本節約轉向用戶體驗的安全性和便利性,FuSa層的重要性將不斷提高。




關鍵字: