0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在AUTOSAR系統(tǒng)中如何將BSW模塊分配到不同的分區(qū)和內(nèi)核呢?

冬至子 ? 來源:汽車電子與軟件 ? 作者:踐行者 ? 2023-11-16 17:49 ? 次閱讀

本文主要討論在 AUTOSAR 系統(tǒng)中如何將 BSW 模塊分配到不同的分區(qū)(Partition)和內(nèi)核。主要解決了以下問題:

  • 如何修改 BSW 模塊以支持多核并行執(zhí)行
  • 如何配置將 BSW 模塊分配到不同分區(qū)
  • MCAL(微控制器抽象層)模塊的多核支持方式
  • 通信棧(Com-Stack)的分配方案
  • 加密服務(wù)(Crypto-Stack)的分配方案
  • 在安全關(guān)鍵系統(tǒng)中進(jìn)行 BSW 分配的方式

相比單核系統(tǒng),多核 BSW 分配需要解決的主要問題是:

  • 并行執(zhí)行帶來的數(shù)據(jù)一致性問題
  • 跨分區(qū)調(diào)用的內(nèi)存訪問權(quán)限問題
  • 如何分配核心的硬件資源訪問權(quán)
  • 啟動/關(guān)閉時對安全性的影響
  • 由分區(qū)引入的新的錯誤場景

AUTOSAR 提供了一系列機(jī)制來解決這些問題,支持高效、安全的 BSW 多核分配。

BSW 在多核系統(tǒng)中的分配

支持的分配場景

AUTOSAR 支持將 BSW 功能相關(guān)的模塊分配到不同的分區(qū),這既可以提升性能,也可以增強(qiáng)安全性。每種功能集群包含一組相關(guān)的 BSW 模塊,可以包含通信、存儲、IO、看門狗等等。同一類型的功能集群可以存在于多個分區(qū)中。

為支持分區(qū)分配,BSW 模塊實(shí)體分為主模塊和從模塊,可以分配到不同分區(qū)中,主模塊與從模塊通過非標(biāo)準(zhǔn)化的 AUTOSAR 接口進(jìn)行跨分區(qū)通信。

AUTOSAR 支持下列分配場景:

將 BSW 功能集群分配到一個分區(qū),提高性能

將 BSW 功能集群的子集分配到多個分區(qū),提高并發(fā)性

可以將主從模塊實(shí)體分配到多個分區(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)核上可以提高性能。

實(shí)現(xiàn)多個通信集群之間的信號網(wǎng)關(guān)功能,需要在不同內(nèi)核上同步不同的通信模塊。

技術(shù)實(shí)現(xiàn)概覽

AUTOSAR 定義了一些新概念,并擴(kuò)展了部分模塊,來支持多核BSW分配:

BSW 功能集群:一組功能相關(guān)的 BSW 模塊,包含通信、存儲、IO、看門狗等模塊組。

分區(qū)間通信:使用調(diào)度器(SchM)提供的函數(shù)實(shí)現(xiàn)跨分區(qū)調(diào)用。

服務(wù)執(zhí)行定位:通過事件到任務(wù)的映射來確定服務(wù)執(zhí)行的分區(qū)。

主從模塊:將模塊拆分為主模塊和從模塊,分配到不同分區(qū)并通過非標(biāo)準(zhǔn)化接口通信,如下圖所示:

image.png

要點(diǎn)是,模塊之間的接口保持不變,分區(qū)分配引起的變化主要內(nèi)藏在模塊內(nèi)部。

BSW 模塊的并行執(zhí)行

為支持多核并行執(zhí)行,BSW 模塊需要實(shí)現(xiàn)以下機(jī)制:

基于核 ID 進(jìn)行執(zhí)行代碼,實(shí)現(xiàn)定制的核相關(guān)行為。

使用主從模塊設(shè)計(jì)模式,主模塊負(fù)責(zé)協(xié)調(diào)從模塊。

使用 SchM 提供的跨分區(qū)函數(shù)實(shí)現(xiàn)模塊間通信。

在無內(nèi)存保護(hù)的系統(tǒng)中,允許直接跨分區(qū)調(diào)用,但需要用互斥區(qū)保護(hù)共享數(shù)據(jù)。

每個分區(qū)使用本地的驅(qū)動訪問硬件資源

BSW 分區(qū)配置

為管理分區(qū)中的 BSW 模塊,需要進(jìn)行如下配置:

為每個 BSW 分區(qū)配置一個 OsApplication。

在 EcuC 中配置分區(qū)以及模塊到分區(qū)的映射。

為每個 BSW 分區(qū)單獨(dú)配置 BswM。

每個內(nèi)核一個 EcuM 實(shí)例。

跨分區(qū)調(diào)用處理

當(dāng) BSW 模塊分配到不同分區(qū)后,最重要的問題是如何處理跨分區(qū)調(diào)用。主要的處理手段包括:

使用激活 Task 或設(shè)置 Event 的方式,轉(zhuǎn)至被調(diào)用分區(qū)執(zhí)行實(shí)際調(diào)用。

調(diào)用方使用 CallTrustedFunction 進(jìn)入被調(diào)用分區(qū)。

若被調(diào)用函數(shù)不訪問本地數(shù)據(jù),則可直接調(diào)用。

參數(shù)在分區(qū)間傳遞需要使用復(fù)制或特殊硬件機(jī)制來保證無干擾。

啟動、關(guān)閉和睡眠/喚醒處理

在啟動階段,內(nèi)存保護(hù)是未啟用的,此時需要注意避免重要數(shù)據(jù)被覆蓋。

在關(guān)閉階段,內(nèi)存保護(hù)已經(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í)行,作用于獨(dú)立的硬件元素,如 CAN、FlexRay等

Type III:可作用于全局可用的硬件元素,如 Dio Driver

Type IV:可在任何核上使用模塊的接口,但僅通過一個核來訪問映射元素,如 ADC、PWM、ICU 和 OCU

Type V:可在任何核上使用模塊的接口,通過相應(yīng)的核單獨(dú)訪問可映射元素

不同類型采用不同的資源分離策略,例如硬件級分離或軟件級互斥保護(hù)。

各類 MCAL 模塊可以分配為上述 5 種類型中的一種,以指明其多核支持方式。配合多核類型,開發(fā)者需要定義可映射的硬件元素,以及元素到內(nèi)核的映射關(guān)系,作為多核支持的基礎(chǔ)。

通信協(xié)議棧分配

通信棧(Com-Stack)可以分配到不同的分區(qū)中,以提高負(fù)載分配效率。分配方式包括:

根據(jù)網(wǎng)絡(luò)類型,將 I-PDU 分配到不同的 MainFunction 中。

PduR 負(fù)責(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 安全分配的主要機(jī)制包括:

使用多個分區(qū),進(jìn)行空間隔離。

對執(zhí)行實(shí)體進(jìn)行監(jiān)控,防止阻塞或順序錯誤。

端到端保護(hù),避免通信數(shù)據(jù)被修改。

特定模塊提供額外的安全機(jī)制。

跨分區(qū)調(diào)用

分區(qū)調(diào)用需要檢查是否符合 Safety 要求??梢允褂?Stub 函數(shù)封裝被調(diào)用的功能,處理分區(qū)切換問題。

具體來說,分區(qū)調(diào)用可以有如下情況:

QM 調(diào)用 ASIL:使用 Stub 函數(shù)進(jìn)入 ASIL 分區(qū),如下圖所示。

image.png

ASIL 調(diào)用 QM:使用包裝函數(shù)進(jìn)入QM 分區(qū),如下圖所示。

image.png
ASIL 調(diào)用 ASIL:類似地需要 Stub 函數(shù)或包裝函數(shù)。

參數(shù)傳遞需要使用復(fù)制或特殊硬件機(jī)制來保證安全。

啟動/關(guān)閉和睡眠/喚醒

啟動階段需要注意數(shù)據(jù)隔離。

關(guān)閉時可以檢測隔離問題。

睡眠/喚醒處理也需要考慮安全需求。

錯誤處理

分區(qū)調(diào)用可能產(chǎn)生新的錯誤場景,需要檢測內(nèi)存溢出、超時等問題。

可以配置分區(qū)的 Timing 保護(hù),避免過早重啟。

性能考量

分區(qū)隔離會增加調(diào)用開銷??梢酝ㄟ^減少分區(qū)數(shù)量、優(yōu)化模塊映射和 calls 來獲得最佳平衡。

未來的 AUTOSAR 版本

未來 AUTOSAR 可能進(jìn)行如下改進(jìn):

標(biāo)準(zhǔn)化 BSW 功能集群及其接口,如下圖所示。

image.png

支持更高效的分區(qū)間調(diào)用

支持用例分區(qū)提升安全性

等等

注意事項(xiàng)

BSW模塊設(shè)計(jì)

對共享數(shù)據(jù)的訪問需要加互斥保護(hù)

調(diào)用其他模塊接口前需獲取分區(qū) ID,根據(jù) ID 區(qū)分主從代碼

主模塊負(fù)責(zé)協(xié)調(diào)從模塊,可監(jiān)控和過濾請求

主從模塊間使用非標(biāo)準(zhǔn)化接口通信

多核場景下接口需要支持異步調(diào)用

BSW配置

每個 BSW 分區(qū)需配置一個 OS 應(yīng)用程序

需要配置 BSW 模塊到分區(qū)的映射

需要配置每個分區(qū)的 BswM 實(shí)例

需要配置核心的 EcuM 實(shí)例

需要配置分區(qū)的 BSW 啟動/關(guān)閉順序

跨分區(qū)調(diào)用

使用激活任務(wù)或事件切換調(diào)用上下文

調(diào)用方使用 CallTrustedFunction 進(jìn)入被調(diào)方分區(qū)

檢查直接調(diào)用是否安全

小心處理參數(shù)傳遞的內(nèi)存訪問權(quán)限

安全系統(tǒng)相關(guān)

啟動階段內(nèi)存保護(hù)尚未啟動,需謹(jǐn)慎操作

最小化啟動前執(zhí)行的代碼量

安全相關(guān)機(jī)制只在必要分區(qū)上實(shí)現(xiàn)

檢查分區(qū)調(diào)用是否被符合 Safety 要求

準(zhǔn)確配置調(diào)用的 Stub 函數(shù)或包裝函數(shù)

謹(jǐn)慎處理睡眠喚醒的安全需求

檢測由分區(qū)引入的新錯誤場景

平衡分區(qū)數(shù)量和性能

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7396

    瀏覽量

    150633
  • 看門狗
    +關(guān)注

    關(guān)注

    10

    文章

    557

    瀏覽量

    70670
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    344

    瀏覽量

    21415
  • BSW
    BSW
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    3499
  • 調(diào)度器
    +關(guān)注

    關(guān)注

    0

    文章

    98

    瀏覽量

    5223
收藏 人收藏

    評論

    相關(guān)推薦

    Linux內(nèi)核何時如何將寫入的數(shù)據(jù)回寫到磁盤

    write系統(tǒng)調(diào)用寫入數(shù)據(jù)后,文件系統(tǒng)頁緩存寫入數(shù)據(jù)便返回了write系統(tǒng)調(diào)用,并沒有分配
    發(fā)表于 10-18 16:00 ?2400次閱讀
    Linux<b class='flag-5'>內(nèi)核</b>是<b class='flag-5'>在</b>何時<b class='flag-5'>如何將</b>寫入的數(shù)據(jù)回寫到磁盤

    STM32H743如何讓malloc自動分配到外部RAM

    本人試過進(jìn)入main之前修改啟動文件,增加SDRAM的初始化,并且??臻g指定在內(nèi)部防止初始化錯誤,程序還是死Hardfault_Handler。還有什么辦法可以malloc自動
    發(fā)表于 03-13 07:14

    如何將分區(qū)劃分為可讀分區(qū)

    ,然后USB側(cè)將它們作為單獨(dú)的邏輯單元枚舉。定義了Cyfxxsibx分區(qū)(2)。如果我已經(jīng)增加到4,它顯示了4個分區(qū)。4個分區(qū)
    發(fā)表于 09-27 14:22

    為什么使用AUTOSAR

    文章目錄一、總概述1 為什么使用AUTOSAR?1.1 AUTOSAR出現(xiàn)之前的行業(yè)現(xiàn)狀1.2 AUTOSAR出現(xiàn)之后可以實(shí)現(xiàn)如下目標(biāo)2、AUTOSAR總概述二、各層分別概述1、
    發(fā)表于 12-09 07:50

    AUTOSAR基礎(chǔ)軟件層是由哪些部分組成的

    AUTOSAR基礎(chǔ)軟件層即BSW(Basic Software)層,與應(yīng)用層、運(yùn)行環(huán)境層共同搭建了AUTOSAR的軟件體系。三個層從上而下,層層遞進(jìn),實(shí)現(xiàn)了從人機(jī)交互到底層硬件的聯(lián)系。AUTO
    發(fā)表于 02-17 08:00

    介紹一種適配RT-Thread內(nèi)核autosar操作系統(tǒng)

    目是基于autosar3.1的開源代碼arctic core,在此基礎(chǔ)上,完成n32g45x上的mcal驅(qū)動,適配RT-Thread內(nèi)核autosar的操作
    發(fā)表于 05-19 15:40

    基于RT-Thread內(nèi)核AUTOSARn32g上的實(shí)現(xiàn)方案

    的操作系統(tǒng)。目前已完成mcal的mcu驅(qū)動,autosar的osek操作系統(tǒng)已經(jīng)能在n32g45x上正常調(diào)度,移植rtthread到arctic core,但是適配OSEK/VDX的
    發(fā)表于 07-27 14:30

    AUTOSAR功能安全機(jī)制之內(nèi)存分區(qū)與實(shí)現(xiàn)

    1、AUTOSAR功能安全機(jī)制之內(nèi)存分區(qū)與實(shí)現(xiàn)  AUTOSAR架構(gòu),應(yīng)用軟件位于RTE上方,由互連的
    發(fā)表于 09-19 15:55

    如何將IP模塊整合到System Generator for DSP

    了解如何將Vivado HLS設(shè)計(jì)作為IP模塊整合到System Generator for DSP。 了解如何將Vivado HLS設(shè)計(jì)保存為IP
    的頭像 發(fā)表于 11-20 05:55 ?3165次閱讀

    如何將交換機(jī)的接口分配到vlan

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何將交換機(jī)的接口分配到vlan。
    發(fā)表于 11-20 08:00 ?5次下載
    <b class='flag-5'>如何將</b>交換機(jī)的接口<b class='flag-5'>分配到</b>vlan<b class='flag-5'>中</b>

    基于AUTOSAR規(guī)范的操作系統(tǒng)知識

    汽車電子控制器目前基本遵循AUTOSAR規(guī)范,而其中操作系統(tǒng)作為BSW的重頭戲,始終讓學(xué)習(xí)AUTOSAR的同學(xué)望而生畏,進(jìn)而望而卻步。所以
    的頭像 發(fā)表于 02-13 14:03 ?1547次閱讀
    基于<b class='flag-5'>AUTOSAR</b>規(guī)范的操作<b class='flag-5'>系統(tǒng)</b>知識

    通過擴(kuò)頻調(diào)頻技術(shù)如何將頻譜能量分配到頻譜

    一般而言,遵守電磁標(biāo)準(zhǔn)對于開關(guān)電源愈發(fā)重要,這不僅局限于總光譜能量過大,更多的原因是能量集中基本開關(guān)頻率及其諧波的特定窄帶。為此,第 9 部分提出通過擴(kuò)頻調(diào)頻 (SSFM) 技術(shù)頻譜能量
    的頭像 發(fā)表于 03-29 09:33 ?2128次閱讀
    通過擴(kuò)頻調(diào)頻技術(shù)<b class='flag-5'>如何將</b>頻譜能量<b class='flag-5'>分配到</b>頻譜<b class='flag-5'>中</b>

    關(guān)于AUTOSAR-DEM模塊的簡要介紹和幾點(diǎn)思考

    DEM全稱“Diagnostic Event Management”,該模塊作為AUTOSAR架構(gòu)BSW模塊之一,對于ECU軟件開發(fā)也是
    的頭像 發(fā)表于 04-15 17:12 ?3020次閱讀

    一文入門AUTOSAR OS

    Autosar Os Autosar 框架中上至RTE 下至驅(qū)動,中間可以和BSW 基礎(chǔ)模塊進(jìn)行交互。是整個
    的頭像 發(fā)表于 06-29 10:34 ?3937次閱讀
    一文入門<b class='flag-5'>AUTOSAR</b> OS

    AUTOSAR經(jīng)典平臺介紹

    汽車電子系統(tǒng)的軟件組件、運(yùn)行時環(huán)境和通信機(jī)制,以實(shí)現(xiàn)模塊化、可重用和可擴(kuò)展的系統(tǒng)開發(fā)。 AUTOSAR CP
    的頭像 發(fā)表于 10-27 15:30 ?1286次閱讀
    <b class='flag-5'>AUTOSAR</b>經(jīng)典平臺介紹