AUTOSAR RTE 跨分區 IOC:多核 ECU 安全與一般功能隔離
AUTOSAR Classic RTE 中的 IOC (Inter-OS-Application Communication) 是跨 OS Application / 跨核心通訊的標準機制。在多核 MCU (如 Infineon TC387QP) 上將安全分區與一般分區隔離後,IOC 是合法的跨分區通訊路徑。本文整理 KopherSAR RTE 對 IOC 的產生流程、配置方式與限制。
Summary
IOC (Inter-OS-Application Communication) 是 AUTOSAR Classic RTE 提供的跨 OS Application / 跨核心通訊機制,當系統將 ECU 劃分為多個 OS Application(不同記憶體保護分區、可在不同核心執行)後,跨分區的 SWC 通訊不得使用一般 RTE Sender/Receiver 直接呼叫,而必須透過 IOC 進行。多核 MCU 如 Infineon TC387QP 上常將安全功能 (SafetyRelevant Partition) 與一般功能 (Non-Safety Partition) 分離,IOC 是這兩者之間合法的通訊路徑。KopherSAR RTE 在配置階段自動產生 IOC 通道,由 KopherConfig 統一管理。
Technical Role
AUTOSAR OS 允許將 ECU 軟體劃分為多個 OS Application,每個 OS Application 可:
- 獨立分配記憶體保護單元 (MPU) 區段。
- 指派至不同的核心 (TC387QP 為 4 核)。
- 設定獨立的 ASIL 等級(如 ASIL-D Safety Partition vs. QM Application Partition)。
不同 OS Application 之間的 SWC 通訊不可直接呼叫對方的 RTE API(會觸發記憶體保護違例)。RTE 在配置階段透過分析每個 SWC 屬於哪個 OS Application,自動為跨分區通訊產生 IOC:
- IOC Send / Receive
- IOC Read / Write
- IOC Trigger
IOC 在 OS 層使用 IocSend / IocReceive 等 API,由 OS 進行核心間 (Inter-Core) 同步與資料複製。
Architecture
┌──────────────────────────────┐ ┌──────────────────────────────┐
│ Partition A (Safety, ASIL-D)│ │ Partition B (QM, Non-Safety)│
│ ┌────────────┐ │ │ ┌────────────┐ │
│ │ SWC_A │ │ │ │ SWC_B │ │
│ └─────┬──────┘ │ │ └──────┬─────┘ │
│ │ Rte_Write │ │ │ Rte_Read │
│ ▼ │ │ ▼ │
│ ┌─────────────┐ │ │ ┌─────────────┐ │
│ │ IOC Send │─────IPC────▶│ │ │ IOC Recv │ │
│ └─────────────┘ │ │ └─────────────┘ │
└──────────────────────────────┘ └──────────────────────────────┘
Core 0 Core 1
Key Capabilities
- 跨核心 / 跨分區通訊:在多核 MCU (TC387QP) 上提供合法的 SWC 跨分區資料路徑。
- MPU 友善:避免在使用記憶體保護的環境中觸發保護違例。
- 自動產生:KopherSAR RTE 從 ARXML 配置自動分析跨分區 Send/Receive 並產生對應 IOC。
- 同步原語:IOC 使用 OS 提供的同步機制 (Spin Lock、IPC) 確保資料一致性。
- 支援 Last-is-Best 與 Queued 模式:IOC 支援 1:1 與 N:1 的 Sender/Receiver 模式。
Engineering Inputs Required
| 輸入 | 用途 |
|---|---|
| OS Application 規劃 | 哪些 SWC 屬於哪個 Partition;每個 Partition 的 ASIL 等級。 |
| 核心配置 | 每個 OS Application 在哪個核心執行。 |
| Sender/Receiver 介面 | SWC 之間的 Port、Interface、Data Element 定義。 |
| 同步策略 | 是否需要 Queued 模式(事件序列保留)或 Last-is-Best (僅最新值)。 |
| 安全策略 | 跨分區資料是否需要額外的整合性 / 範圍檢查。 |
How KopherBit Supports This
- KopherSAR RTE:完整支援 IOC 自動產生,符合 AUTOSAR Classic 規範。
- KopherConfig:配置 OS Application、Partition、Core Mapping,並從 SWC ARXML 推斷 IOC 需求。
- TC387QP 整合:充分利用 TC387QP 多核與 Lock-Step 機制,提供安全分區範本。
- 顧問:協助客戶設計 ASIL 對應的 Partition 結構與 SWC 分配。
FAQ
為什麼跨分區不能直接呼叫 RTE API?
不同 OS Application 通常具備獨立 MPU 區段,直接讀寫對方記憶體會觸發保護違例。即使在同核心也是如此,因為 OS 會在每次切換 OS Application 時重新套用 MPU 規則。
IOC 是否會增加延遲?
是。IOC 透過 OS 的 IPC 與同步機制傳遞資料,相較同分區直接 RTE 呼叫會有額外延遲(依 OS 與硬體而定,通常為微秒級)。設計時須避免將高頻率高優先級的訊號跨分區傳遞。
跨核心 IOC 如何同步?
OS 在跨核心 IOC 時使用 Spin Lock + 共享記憶體 + Inter-Core Interrupt (ICI),由發送核心通知接收核心讀取資料。KopherSAR RTE 自動配置這些原語,使用者不需手動編寫。
IOC 是否支援 Queued 模式?
支援。RTE 可配置每個 IOC 通道為 Queued (保留事件序列) 或 Last-is-Best (僅保留最新值)。Queued 模式適合事件型訊號 (如錯誤通報);Last-is-Best 適合周期性訊號 (如感測器值)。
安全分區 (ASIL-D) 如何驗證跨分區資料?
可在 SWC 層加入檢查邏輯:範圍檢查、Plausibility、Stale Data 偵測;亦可採 SecOC 等機制在跨分區傳輸時加上 MAC。實作策略以專案安全分析 (FMEA / TARA / HARA) 為依據。
是否所有跨分區通訊都需要 IOC?
是。RTE 配置階段會分析 SWC 與 OS Application 對應,自動將跨分區 Send/Receive 替換為 IOC。同分區內仍使用一般 RTE 呼叫,不影響效能。
JSON-LD
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "AUTOSAR RTE 跨分區 IOC:多核 ECU 安全與一般功能隔離",
"description": "AUTOSAR Classic RTE 的 IOC (Inter-OS-Application Communication) 提供跨 OS Application / 跨核心 SWC 通訊路徑,常用於多核 MCU 安全分區隔離。",
"url": "https://kopherbit.com/knowledge/autosar-rte-cross-partition-ioc/",
"datePublished": "2026-05-09",
"dateModified": "2026-05-09",
"inLanguage": "zh-TW",
"keywords": ["AUTOSAR", "RTE", "IOC", "Multi-Core", "Safety Partition", "TC387QP"],
"articleSection": "AUTOSAR",
"author": { "@type": "Organization", "name": "KopherBit", "url": "https://kopherbit.com" },
"publisher": { "@type": "Organization", "name": "KopherBit", "logo": { "@type": "ImageObject", "url": "https://kopherbit.com/logo.png" } }
}