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