邏輯架構

AAOS SDV 提供以服務和資料為中心的架構。使用者透過中介軟體用戶端程式庫與系統互動,並由車輛服務介面定義語言 (VSIDL) 輔助。這會隱藏低層級基礎架構詳細資料,讓開發人員專注於高層級通訊和部署實體。

通訊模型

SDV 中的邏輯通訊是由主題和管道定義。

主題

主題用於以資料為中心的通訊 (發布/訂閱)。使用者會與具名主題上發布的訊息互動,而不是探索特定發布者。

  • 識別碼:主題是由不重複的字串識別。
  • 資料類型:使用 protobuf 定義發布至主題的訊息。
  • 解除耦合:訂閱者關心的是訊息類型和主題名稱,而不是發布者的身分或位置。多位發布者可以發布至相同主題,實現多對多通訊。

頻道

管道用於根據遠端程序呼叫 (RPC) 進行通訊。使用者會在特定管道上呼叫服務方法,不必知道哪個伺服器正在處理要求。

  • ID:頻道會以專屬名稱識別 (例如 main-control)。
  • 服務類型:RPC 服務是以完整 protobuf 服務名稱識別。
  • 抽象化:中介軟體會處理特定服務和管道的適當伺服器執行個體。

部署和生命週期

本節中的實體定義軟體在 SDV 環境中封裝、授權和例項化的方式。

服務組合

服務套件是一組相關的商業邏輯,主要有兩項用途:

  1. 部署單位:服務套件會以 SDV 套件的形式部署,這是 APEX 檔案,也是最小的軟體更新單位。
    • 每個服務套件在執行階段都會唯一對應至 SDV VM 上的單一 Linux 程序,並稱為「服務套件執行個體」
    • 服務套件會參照 SDV 套件資訊清單,其中包含名稱和授權政策等中繼資料。
  2. 授權單位:權限會授予整個服務套裝組合。服務套裝組合可授權:
    • 發布或訂閱特定主題 (適用於特定訊息類型)。
    • 放送或呼叫特定管道 (適用於指定服務類型)。

服務套裝組合執行個體

服務套件執行個體是服務套件的執行階段載入執行個體。

  • SDV 生命週期管理工具 (LCM) 會個別追蹤及識別每個服務套件執行個體。
  • 服務套件執行個體啟動作業是由 SDV Orchestrator 觸發,並由 SDV LCM 啟動及追蹤。

SDV 套件

SDV 套件是軟體可更新性的最小單位,且:

  • Android Pony EXpress (APEX) 檔案。
  • 包含一或多個服務套裝組合。
  • 一次更新,也就是說,SDV 套件中的所有服務組合都會一次更新。

SDV 套件中的所有程式碼都來自相同的信任來源 (相同的軟體發布商)。

同一 SDV 套件的不同版本可以存在於不同的 SDV VM 中。

實作詳細資料

以下各節說明 SDV 傳輸層的實作詳細資料。

背景:服務單位

雖然開發人員主要與主題和管道互動,但服務單元仍是 SDV 通訊堆疊中註冊和探索的基礎機制。

服務單元代表單一端點,例如 RPC 伺服器或發布者。中介軟體用戶端程式庫 (mw::clientlib) 會在幕後處理這些服務單元的註冊和探索作業。