本文主要討論在 AUTOSAR 系統(tǒng)中如何將 BSW 模塊分配到不同的分區(qū)(Partition)和內(nèi)核。主要解決了以下問題:
- 如何修改 BSW 模塊以支持多核并行執(zhí)行
- 如何配置將 BSW 模塊分配到不同分區(qū)
- MCAL(微控制器抽象層)模塊的多核支持方式
- 通信棧(Com-Stack)的分配方案
- 加密服務(wù)(Crypto-Stack)的分配方案
- 在安全關(guān)鍵系統(tǒng)中進行 BSW 分配的方式
相比單核系統(tǒng),多核 BSW 分配需要解決的主要問題是:
- 并行執(zhí)行帶來的數(shù)據(jù)一致性問題
- 跨分區(qū)調(diào)用的內(nèi)存訪問權(quán)限問題
- 如何分配核心的硬件資源訪問權(quán)
- 啟動/關(guān)閉時對安全性的影響
- 由分區(qū)引入的新的錯誤場景
AUTOSAR 提供了一系列機制來解決這些問題,支持高效、安全的 BSW 多核分配。
BSW 在多核系統(tǒng)中的分配
支持的分配場景
AUTOSAR 支持將 BSW 功能相關(guān)的模塊分配到不同的分區(qū),這既可以提升性能,也可以增強安全性。每種功能集群包含一組相關(guān)的 BSW 模塊,可以包含通信、存儲、IO、看門狗等等。同一類型的功能集群可以存在于多個分區(qū)中。
為支持分區(qū)分配,BSW 模塊實體分為主模塊和從模塊,可以分配到不同分區(qū)中,主模塊與從模塊通過非標(biāo)準(zhǔn)化的 AUTOSAR 接口進行跨分區(qū)通信。
AUTOSAR 支持下列分配場景:
將 BSW 功能集群分配到一個分區(qū),提高性能
將 BSW 功能集群的子集分配到多個分區(qū),提高并發(fā)性
可以將主從模塊實體分配到多個分區(qū)
性能優(yōu)化場景
通過將 BSW 模塊分配到多個分區(qū)和內(nèi)核,可以提升系統(tǒng)性能,減少資源占用。主要的性能優(yōu)化場景包括:
將通信相關(guān)的模塊集群分配到一個內(nèi)核,將 I/O 相關(guān)的模塊集群分配到另一個內(nèi)核。
如果硬件資源只能被一個內(nèi)核訪問,則將對應(yīng)的 BSW 用戶、服務(wù)和驅(qū)動都部署在該內(nèi)核上可以提高性能。
實現(xiàn)多個通信集群之間的信號網(wǎng)關(guān)功能,需要在不同內(nèi)核上同步不同的通信模塊。
技術(shù)實現(xiàn)概覽
AUTOSAR 定義了一些新概念,并擴展了部分模塊,來支持多核BSW分配:
BSW 功能集群:一組功能相關(guān)的 BSW 模塊,包含通信、存儲、IO、看門狗等模塊組。
分區(qū)間通信:使用調(diào)度器(SchM)提供的函數(shù)實現(xiàn)跨分區(qū)調(diào)用。
服務(wù)執(zhí)行定位:通過事件到任務(wù)的映射來確定服務(wù)執(zhí)行的分區(qū)。
主從模塊:將模塊拆分為主模塊和從模塊,分配到不同分區(qū)并通過非標(biāo)準(zhǔn)化接口通信,如下圖所示:
要點是,模塊之間的接口保持不變,分區(qū)分配引起的變化主要內(nèi)藏在模塊內(nèi)部。
BSW 模塊的并行執(zhí)行
為支持多核并行執(zhí)行,BSW 模塊需要實現(xiàn)以下機制:
基于核 ID 進行執(zhí)行代碼,實現(xiàn)定制的核相關(guān)行為。
使用主從模塊設(shè)計模式,主模塊負責(zé)協(xié)調(diào)從模塊。
使用 SchM 提供的跨分區(qū)函數(shù)實現(xiàn)模塊間通信。
在無內(nèi)存保護的系統(tǒng)中,允許直接跨分區(qū)調(diào)用,但需要用互斥區(qū)保護共享數(shù)據(jù)。
每個分區(qū)使用本地的驅(qū)動訪問硬件資源
BSW 分區(qū)配置
為管理分區(qū)中的 BSW 模塊,需要進行如下配置:
為每個 BSW 分區(qū)配置一個 OsApplication。
在 EcuC 中配置分區(qū)以及模塊到分區(qū)的映射。
為每個 BSW 分區(qū)單獨配置 BswM。
每個內(nèi)核一個 EcuM 實例。
跨分區(qū)調(diào)用處理
當(dāng) BSW 模塊分配到不同分區(qū)后,最重要的問題是如何處理跨分區(qū)調(diào)用。主要的處理手段包括:
使用激活 Task 或設(shè)置 Event 的方式,轉(zhuǎn)至被調(diào)用分區(qū)執(zhí)行實際調(diào)用。
調(diào)用方使用 CallTrustedFunction 進入被調(diào)用分區(qū)。
若被調(diào)用函數(shù)不訪問本地數(shù)據(jù),則可直接調(diào)用。
參數(shù)在分區(qū)間傳遞需要使用復(fù)制或特殊硬件機制來保證無干擾。
啟動、關(guān)閉和睡眠/喚醒處理
在啟動階段,內(nèi)存保護是未啟用的,此時需要注意避免重要數(shù)據(jù)被覆蓋。
在關(guān)閉階段,內(nèi)存保護已經(jīng)啟用,可以檢測問題。
睡眠和喚醒處理也需要考慮安全需求。
錯誤處理
引入分區(qū)后,一些新的錯誤場景需要檢測和處理:
分區(qū)內(nèi)代碼引發(fā)的內(nèi)存錯誤。
分區(qū)內(nèi)代碼執(zhí)行超時引起的定時錯誤。
嘗試訪問沒有權(quán)限的硬件資源。
可以配置分區(qū)延遲上報的時間,避免過早引發(fā)系統(tǒng)重啟。
MCAL及協(xié)議棧分配
MCAL 模塊的多核支持
AUTOSAR 定義了 5 種多核支持類型,用于指明 MCAL 模塊的多核處理方式:
Type I:MCAL 模塊僅在單核上可用,不可全局使用,如 FLS、FEE 模塊
Type II:MCAL 模塊可按核執(zhí)行,作用于獨立的硬件元素,如 CAN、FlexRay等
Type III:可作用于全局可用的硬件元素,如 Dio Driver
Type IV:可在任何核上使用模塊的接口,但僅通過一個核來訪問映射元素,如 ADC、PWM、ICU 和 OCU
Type V:可在任何核上使用模塊的接口,通過相應(yīng)的核單獨訪問可映射元素
不同類型采用不同的資源分離策略,例如硬件級分離或軟件級互斥保護。
各類 MCAL 模塊可以分配為上述 5 種類型中的一種,以指明其多核支持方式。配合多核類型,開發(fā)者需要定義可映射的硬件元素,以及元素到內(nèi)核的映射關(guān)系,作為多核支持的基礎(chǔ)。
通信協(xié)議棧分配
通信棧(Com-Stack)可以分配到不同的分區(qū)中,以提高負載分配效率。分配方式包括:
根據(jù)網(wǎng)絡(luò)類型,將 I-PDU 分配到不同的 MainFunction 中。
PduR 負責(zé)處理不同網(wǎng)絡(luò)之間的分區(qū)通信。
狀態(tài)、模式和網(wǎng)絡(luò)管理由 ComM和Nm 集中處理。
加密服務(wù)分配
加密服務(wù)棧(Crypto-Stack)也可以分配到不同分區(qū)中,每個分區(qū)部署一個 MainFunction。Csm 模塊與 SecOC 模塊需要分配到同一分區(qū),避免分區(qū)切換開銷。
為處理新鮮度值,可以采用如下手段:
保留一個跨分區(qū)的新鮮度管理 SWC
每個分區(qū)一個新鮮度 SWC
使用 SecOC 的可配置 C 語言 API
安全關(guān)鍵系統(tǒng)中的 BSW 分配
概述
AUTOSAR 支持通過分區(qū)隔離來構(gòu)建安全關(guān)鍵系統(tǒng)。最高 ASIL 級別的 BSW 模塊被放入專用分區(qū),低 ASIL 級別的模塊放入公共分區(qū),從而最小化軟件開發(fā)的代碼量。
AUTOSAR 安全分配的主要機制包括:
使用多個分區(qū),進行空間隔離。
對執(zhí)行實體進行監(jiān)控,防止阻塞或順序錯誤。
端到端保護,避免通信數(shù)據(jù)被修改。
特定模塊提供額外的安全機制。
跨分區(qū)調(diào)用
分區(qū)調(diào)用需要檢查是否符合 Safety 要求。可以使用 Stub 函數(shù)封裝被調(diào)用的功能,處理分區(qū)切換問題。
具體來說,分區(qū)調(diào)用可以有如下情況:
QM 調(diào)用 ASIL:使用 Stub 函數(shù)進入 ASIL 分區(qū),如下圖所示。
ASIL 調(diào)用 QM:使用包裝函數(shù)進入QM 分區(qū),如下圖所示。
ASIL 調(diào)用 ASIL:類似地需要 Stub 函數(shù)或包裝函數(shù)。
參數(shù)傳遞需要使用復(fù)制或特殊硬件機制來保證安全。
啟動/關(guān)閉和睡眠/喚醒
啟動階段需要注意數(shù)據(jù)隔離。
關(guān)閉時可以檢測隔離問題。
睡眠/喚醒處理也需要考慮安全需求。
錯誤處理
分區(qū)調(diào)用可能產(chǎn)生新的錯誤場景,需要檢測內(nèi)存溢出、超時等問題。
可以配置分區(qū)的 Timing 保護,避免過早重啟。
性能考量
分區(qū)隔離會增加調(diào)用開銷。可以通過減少分區(qū)數(shù)量、優(yōu)化模塊映射和 calls 來獲得最佳平衡。
未來的 AUTOSAR 版本
未來 AUTOSAR 可能進行如下改進:
標(biāo)準(zhǔn)化 BSW 功能集群及其接口,如下圖所示。
支持更高效的分區(qū)間調(diào)用
支持用例分區(qū)提升安全性
等等
注意事項
BSW模塊設(shè)計
對共享數(shù)據(jù)的訪問需要加互斥保護
調(diào)用其他模塊接口前需獲取分區(qū) ID,根據(jù) ID 區(qū)分主從代碼
主模塊負責(zé)協(xié)調(diào)從模塊,可監(jiān)控和過濾請求
主從模塊間使用非標(biāo)準(zhǔn)化接口通信
多核場景下接口需要支持異步調(diào)用
BSW配置
每個 BSW 分區(qū)需配置一個 OS 應(yīng)用程序
需要配置 BSW 模塊到分區(qū)的映射
需要配置每個分區(qū)的 BswM 實例
需要配置核心的 EcuM 實例
需要配置分區(qū)的 BSW 啟動/關(guān)閉順序
跨分區(qū)調(diào)用
使用激活任務(wù)或事件切換調(diào)用上下文
調(diào)用方使用 CallTrustedFunction 進入被調(diào)方分區(qū)
檢查直接調(diào)用是否安全
小心處理參數(shù)傳遞的內(nèi)存訪問權(quán)限
安全系統(tǒng)相關(guān)
啟動階段內(nèi)存保護尚未啟動,需謹(jǐn)慎操作
最小化啟動前執(zhí)行的代碼量
安全相關(guān)機制只在必要分區(qū)上實現(xiàn)
檢查分區(qū)調(diào)用是否被符合 Safety 要求
準(zhǔn)確配置調(diào)用的 Stub 函數(shù)或包裝函數(shù)
謹(jǐn)慎處理睡眠喚醒的安全需求
檢測由分區(qū)引入的新錯誤場景
平衡分區(qū)數(shù)量和性能
-
微控制器
+關(guān)注
關(guān)注
48文章
7651瀏覽量
152114 -
看門狗
+關(guān)注
關(guān)注
10文章
566瀏覽量
70949 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
363瀏覽量
21780 -
BSW
+關(guān)注
關(guān)注
0文章
15瀏覽量
3527 -
調(diào)度器
+關(guān)注
關(guān)注
0文章
98瀏覽量
5298
發(fā)布評論請先 登錄
相關(guān)推薦
Linux內(nèi)核是在何時如何將寫入的數(shù)據(jù)回寫到磁盤
![Linux<b class='flag-5'>內(nèi)核</b>是<b class='flag-5'>在</b>何時<b class='flag-5'>如何將</b>寫入的數(shù)據(jù)回寫到磁盤](https://file.elecfans.com/web2/M00/71/67/pYYBAGNOWe2AQMRNAAAqL1dt8Vk197.png)
STM32H743如何讓malloc自動分配到外部RAM中呢?
如何將分區(qū)劃分為可讀分區(qū)?
為什么使用AUTOSAR呢
AUTOSAR基礎(chǔ)軟件層是由哪些部分組成的
介紹一種適配RT-Thread內(nèi)核的autosar操作系統(tǒng)
基于RT-Thread內(nèi)核的AUTOSAR在n32g上的實現(xiàn)方案
AUTOSAR功能安全機制之內(nèi)存分區(qū)與實現(xiàn)
如何將IP模塊整合到System Generator for DSP中
基于AUTOSAR規(guī)范的操作系統(tǒng)知識
![基于<b class='flag-5'>AUTOSAR</b>規(guī)范的操作<b class='flag-5'>系統(tǒng)</b>知識](https://file.elecfans.com/web2/M00/90/D9/pYYBAGPp0kyAU5PjAAFtn6f4svo618.jpg)
通過擴頻調(diào)頻技術(shù)如何將頻譜能量分配到頻譜中
![通過擴頻調(diào)頻技術(shù)<b class='flag-5'>如何將</b>頻譜能量<b class='flag-5'>分配到</b>頻譜<b class='flag-5'>中</b>](https://file.elecfans.com//web2/M00/9B/BC/pYYBAGQjlUuAcqYyAAFGb5ATH-E729.png)
關(guān)于AUTOSAR-DEM模塊的簡要介紹和幾點思考
AUTOSAR經(jīng)典平臺介紹
![<b class='flag-5'>AUTOSAR</b>經(jīng)典平臺介紹](https://file1.elecfans.com/web2/M00/AC/88/wKgZomU7ZZOAZ6FmAAGeWRkg3rQ060.jpg)
評論