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