AAOS SDV 提供以服務和資料為中心的架構。使用者透過中介軟體用戶端程式庫與系統互動,並由車輛服務介面定義語言 (VSIDL) 輔助。這會隱藏低層級基礎架構詳細資料,讓開發人員專注於高層級通訊和部署實體。
通訊模型
SDV 中的邏輯通訊是由主題和管道定義。
主題
主題用於以資料為中心的通訊 (發布/訂閱)。使用者會與具名主題上發布的訊息互動,而不是探索特定發布者。
- 識別碼:主題是由不重複的字串識別。
- 資料類型:使用 protobuf 定義發布至主題的訊息。
- 解除耦合:訂閱者關心的是訊息類型和主題名稱,而不是發布者的身分或位置。多位發布者可以發布至相同主題,實現多對多通訊。
頻道
管道用於根據遠端程序呼叫 (RPC) 進行通訊。使用者會在特定管道上呼叫服務方法,不必知道哪個伺服器正在處理要求。
- ID:頻道會以專屬名稱識別 (例如
main-control)。 - 服務類型:RPC 服務是以完整 protobuf 服務名稱識別。
- 抽象化:中介軟體會處理特定服務和管道的適當伺服器執行個體。
部署和生命週期
本節中的實體定義軟體在 SDV 環境中封裝、授權和例項化的方式。
服務組合
服務套件是一組相關的商業邏輯,主要有兩項用途:
- 部署單位:服務套件會以 SDV 套件的形式部署,這是 APEX 檔案,也是最小的軟體更新單位。
- 每個服務套件在執行階段都會唯一對應至 SDV VM 上的單一 Linux 程序,並稱為「服務套件執行個體」。
- 服務套件會參照 SDV 套件資訊清單,其中包含名稱和授權政策等中繼資料。
- 授權單位:權限會授予整個服務套裝組合。服務套裝組合可授權:
- 發布或訂閱特定主題 (適用於特定訊息類型)。
- 放送或呼叫特定管道 (適用於指定服務類型)。
服務套裝組合執行個體
服務套件執行個體是服務套件的執行階段載入執行個體。
- SDV 生命週期管理工具 (LCM) 會個別追蹤及識別每個服務套件執行個體。
- 服務套件執行個體啟動作業是由 SDV Orchestrator 觸發,並由 SDV LCM 啟動及追蹤。
SDV 套件
SDV 套件是軟體可更新性的最小單位,且:
- Android Pony EXpress (APEX) 檔案。
- 包含一或多個服務套裝組合。
- 一次更新,也就是說,SDV 套件中的所有服務組合都會一次更新。
SDV 套件中的所有程式碼都來自相同的信任來源 (相同的軟體發布商)。
同一 SDV 套件的不同版本可以存在於不同的 SDV VM 中。
實作詳細資料
以下各節說明 SDV 傳輸層的實作詳細資料。
背景:服務單位
雖然開發人員主要與主題和管道互動,但服務單元仍是 SDV 通訊堆疊中註冊和探索的基礎機制。
服務單元代表單一端點,例如 RPC 伺服器或發布者。中介軟體用戶端程式庫 (mw::clientlib) 會在幕後處理這些服務單元的註冊和探索作業。