读保护_混合ASIL系统中不同安全等级模块间的边界保护
01
功能安全組件的軟件開發
針對ISO 26262對功能安全軟件研發的要求,AUTOSAR將功能安全需求進行了具體拆分。當前的AUTOSAR規范囊括了諸多功能安全組件軟件開發的需求概念。
在AUTOSAR系統設計的架構中, 從系統功能設計到ECU功能實現,每個功能特性都需要逐一抽取并分配到對應ECU(如圖1所示),會出現部分功能模塊需要較高安全等級的情況。按照汽車安全完整性等級的要求, 即使絕大多數的功能與安全無關,ECU的所有軟件也需要根據所要求的最高ASIL等級進行開發。典型案例是僅僅一個功能模塊需要ASIL D等級,但是整個ECU都需要按照ASIL D等級進行開發,這種情況稱之為“ASIL提升效應”,會導致額外的研發工作量。為了避免這種情況, ISO 26262允許不同ASIL等級的軟件模塊共存,不過需要充分證明這些模塊之間不存在不期望的交互。這種系統稱之為混合ASIL系統,采用軟件分區的方式來實現,同時確保不同等級模塊間的“Freedom From Interference,FFI“(免于干擾)。
圖1: 混合ASIL系統ECU的功能模塊分配
混合ASIL系統的設計中,不同模塊之間的交互越少越好。系統通過將功能模塊進行拆分的形式進行軟件分區,在分區之間做邊界保護,防止故障傳遞導致的相互影響,至少做到檢測到故障的存在,并將其通知給ASIL軟件模塊,這樣系統可以就此采取一些安全措施。這意味著只將功能安全相關的軟件模塊及邊界保護部分開發成較高的安全等級即可,其他部分仍可保持較低安全等級(如QM),軟件交互如圖2所示。
圖2:ASIL 模塊和QM模塊共存時的邊界保護
ISO 26262 對軟件模塊之間的交互進行了分析并提出了免于干擾的需求,具體落實到軟件的邊界保護包括:內存越界保護,運行時序保護,端對端通信保護。
02
內存越界保護及推薦配置
分區可用于抑制故障以避免模塊間的故障傳遞。在混合ASIL系統中,不同安全等級軟件模塊之間的交互決定了模塊間的相互影響,內存越界保護是實現軟件模塊之間邊界保護的重要途經,主要使用微控制器的內存保護單元(Memory Protection Unit,MPU)對軟件內存區域的訪問進行限制。根據功能安全的要求,微控制器執行保護和模塊間上下文切換的軟件必須具備最高安全等級,即ASIL D等級。在此簡要介紹MICROSAR解決方案通過OS為軟件分區所提供的Memory Protection常見特性及使用簡介。
Memory Protection Unit
在MICROSAR 解決方案中,OS ?SC3/SC4(Scalability Classes )具備Memory ?Protection 功能特性,可以分別為OS Application 和OS Core ?配置其對內存地址及外設的訪問權限。一般來講,建議將ECU中同一安全等級的軟件模塊放在一個OS Application中,通過Memory Protection 的設置實現不同安全等級軟件模塊間的分區,并通過對不同區域設置訪問權限來達到限制安全等級較低的軟件模塊對其他軟件模塊的訪問。Memory Protection 的實現需要MCU具有Memory Protection System,具備MPU。通過MPU的配置,軟件模塊將具備對不同內存區域的不同訪問權限,主要包括RAM/ROM以及外設寄存器的訪問權限。例如,通過限制低安全等級軟件模塊對高安全等級軟件模塊的Flash段/RAM段訪問權限,可有效防止低安全等級的軟件模塊故障對高安全等級模塊產生級聯性故障威脅。
MPU的配置是通過設置多個MPU Region來實現的,每個MPU Region的可配置選項包括:被保護區域起始/結束地址,訪問權限(讀/寫/執行),所屬MPU分類,Region Owner,以及有效ID等。一般來講MPU分兩類:System MPU和Core MPU。System MPU 主要存在于多核系統中,用于對各個Bus Master 設定內存區域的訪問權限。一般System MPU在系統啟動時設定好,在軟件運行過程中不被重新設置,不會在軟件運行過程中動態更改Bus Master 對內存的訪問權限。Core MPU 是核內MPU,簡稱CMPU,一般每個核都具備一定數量的CMPU,可以為運行在該核上的OS Application/Task/ISR分別設定內存區域及外設寄存器的訪問權限,從而實現軟件模塊分區。訪問權限包括讀/寫/執行權限,可根據內存區域存儲內容進行設定。在OS運行過程中,CMPU可以隨著Application/Task/ISR的切換而動態變更。當各OS Application的權限被設定好后,OS會在OS Application切換時對MPU相關寄存器進行重新初始化,并設置成即將切換到的OS Application權限。當出現訪問超出MPU允許權限范圍時,MCU Exception會被觸發并進入其相應的OS處理函數,用戶可以根據情況Shutdown OS 或選擇進入安全模式,從而有效阻止軟件故障的發生。
推薦MPU配置
在OS SC3/SC4中,OS Application分兩類:具備最高安全等級的OS Application可以設定為Trusted Application,其他不具備Trusted 屬性的Application屬于Non_trusted Application。OS和Trusted ?Application 運行在Supervisor Mode下,Non_trusted Application 則運行在User Mode下。推薦為Trusted ?Application設定除stack 區域以外的所有地址范圍的讀/寫/執行權限,包括外設地址。為Non_trusted Application設定屬于其私有的Code Flash和RAM段的訪問權限,以及共享數據區域的讀寫權限。在軟件運行過程中,OS會占用一個MPU Region來實時監控當前堆棧使用情況。當Task/ISR切換時, OS會重新初始化該MPU Region以進行堆棧溢出的監控。相對于通過堆棧末尾標志的改寫情況來判斷堆棧溢出的方式,使用MPU進行堆棧溢出保護更加及時。此外,OS 提供一些訪問外設寄存器的API,供運行在User Mode下的OS Application調用,并使用OS的Supervisor Mode訪問外設寄存器。常見應用情況為低安全等級的MCAL模塊調用OS API訪問外設。用戶使用時需要對外設地址設定相應的Peripheral Region,其配置選項包括起始/結束地址。
用戶可以根據ECU軟件各模塊安全等級情況,將其合理劃分到多個OS Application中,依據MCU資源設定MPU,進而實現不同安全等級的軟件模塊協同工作,并把故障概率降到允許范圍內的需求。
03
運行時序保護
進一步的檢測方式可以通過監控ASIL軟件模塊的運行時序來實現,包括代碼執行順序和時間間隔等。實現方式為軟件看門狗管理模塊配合安全的硬件看門狗進行監控:當軟件檢測到任何不符合預期的運行時序,都將系統切換到安全狀態,例如Fail Safe模式。這不能防止錯誤的發生,但是可以檢測到錯誤并阻止其造成進一步的人身安全傷害。
運行時序保護采用3種形式的監控來實現:
Alive Supervision以心跳形式監控程序執行情況。例如監控周期處理函數是否按照期望周期運行,可以設置一個Check Point(CP),在周期函數的某個位置觸發該CP以通知看門狗管理模塊該函數已執行,同時適當配置監控時間參數以做到一定程度的監控。
Deadline Supervision監控程序中兩點之間的運行時間間隔。設置兩個CP并將其分別放在需要監控的程序位置,看門狗管理模塊會根據二者分別到達的時間測量得到兩點之間的執行時間,與配置的時間參數進行對比查看是否在期望值范圍內,從而起到監控作用。
Program Flow 監控程序執行順序。設置多個CP并分別插入不同的代碼位置,看門狗管理模塊通過各CP到達的順序監控程序的執行順序。
看門狗管理模塊建立監控單元Supervisor Entity(SE),并通過監控其狀態來判斷程序運行情況,每個SE通過觀測CP的到達情況判斷軟件執行情況。如果出現異常情況則在一定的反應時間內做出處理,將系統調整進入Fail Safe狀態。開發人員通過設計一定的Fail Safe模式預防故障造成進一步的安全問題。
04
端對端通信保護
ISO26262中列舉了信息交互中的相關錯誤格式,AUTOSAR規范則定義了通過端對端保護來檢測到這些錯誤的算法。與程序運行時序監控一樣,最終目的都是檢測出故障,并在故障導致進一步安全問題之前控制局面,將系統控制在安全狀態下。端對端通信保護主要使用序列號和校驗和對數據進行保護,通過對二者的檢測判斷是否有數據丟失、錯亂、重復等問題出現。此外,高安全等級的端對端保護模塊(End to End,簡稱E2E)需要配合安全的RTE(Runtime Environment)模塊進行使用。
05
ASIL D BSW 的優勢
前文描述的混合ASIL系統所使用基于MPU的內存越界保護可以降低軟件模塊間的干擾,是非常強大的保護機制。但是不同安全等級軟件模塊之間的交互會導致系統重新初始化MPU硬件寄存器。這種交互越多,系統在上下文切換上消耗的運行時間就越高,從而嚴重影響系統性能。針對此問題的解決方案是完全采用ASIL D等級的BSW軟件模塊,同時開發高安全等級的應用軟件,這樣各個模塊之間的交互就可以直接進行,不需要進行不同軟件分區的MPU處理。目前MICROSAR解決方案大部分軟件模塊已經達到ASIL D等級,如圖3所示。
圖3:MICROSAR解決方案各模塊安全等級
06
總結
目前,根據AUTOSAR和ISO 26262,ASIL D等級的軟件開發方法已經比較明確,規范內容覆蓋了混合ASIL系統以及ASIL D BSW系統。用戶在設計ECU軟件時,不必假定每個BSW都有功能安全需求,可以根據實際情況進行設計,在確保功能安全需求實現的情況下,更好地提高系統性能。
掃碼關注我們
微信號|Vector維克多
官方網站|vector.com
總結
以上是生活随笔為你收集整理的读保护_混合ASIL系统中不同安全等级模块间的边界保护的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java mysql ssl警告_连接到
- 下一篇: 一阶系统单位阶跃响应的特点_一阶系统的阶