本系列學習筆記基于 AUTOSAR Adaptive Platform 官方檔案 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf,作者 Zijian/TENG,原文地址(獲取最新更新):https://www.cnblogs.com/tengzijian/p/15112262.html
縮寫
- CM:Communication Management
- SOME/IP:Scalable service-Oriented MiddlewarE over IP
- DDS:Data Distribution Service
- IPC:Inter-Process Communication
- PDU:Protocol Data Unit
- SOA:Service Oriented Architecture
- AP:AUTOSAR Adaptive Platform
7 通信管理
7.1 概述
CM 負責分布式、實時、嵌入式環境下的應用間通信,CM 從實作中抽象出一套發現、連接通信物件的機制,這樣應用開發者就能專注于應用軟體本身的業務邏輯,
7.2 面向服務通信
Service 即提供給應用的、基礎軟體之外的功能,CM 提供了 Service 消費者/提供者的機制,支持機器內和跨機器通信,
服務由事件Event、方法Methods、欄位Fields的組合構成,通信各方的通信路徑可以在設計、啟動或者運行時建立,Service Registry 是 CM 軟體中的一個重要組件,起到中間人的作用,

每個提供服務的應用向 Service Registry 注冊服務,服務的客戶端應用先向 Service Registry 查找(find)服務,這一程序叫做服務發現(Service Discovery),
7.3 語言系結和網路系結
CM 標準化了:
- 服務如何呈現給應用實作者(上層,語言系結)
- 服務資料如何在網路中表示(下層,網路系結)
以上兩點保證了原始碼的可移植性和已編譯的服務在不同平臺實作的兼容性,
語言系結定義了:如何將服務的 methods,events,fields 翻譯成目標語言中可直接訪問的識別符號,性能和型別安全(只要目標語言支持)是首要目標,因此,語言系結一般實作為以服務介面定義為輸入的代碼生成器,
型別安全:編譯時驗證型別

網路系結定義了:服務資料如何序列化以及如何系結到特定網路,可以實作為基于 CM 的配置(AUTOSAR 元模型介面定義)實作:或通過解釋(生成的)服務 recipe,或直接生成序列化代碼,
目前 CM 支持 SOME/IP,DDS,IPC 以及 Signal PDU(基于信號的網路系結),
本地 Service Registry 也是網路系結的一部分,
注意:語言系結和網路系結之間的介面應當視為 CM 內部的 private 介面,盡管如此,平臺供應商應當盡量為其軟體定義獨立的介面,以便在平臺內實作除 C++ 之外的語言系結,
7.4 C++ 語言系結 Proxies 和 Skeletons 代碼生成
C++ 語言系結的上層介面提供了(定義在AUTOSAR 元模型介面描述中的)服務的面向物件映射,生成器是部署工具的一部分,用于為 CM 生成包含各個 Service 的 fields、events 和 methods 的型別安全表示的 C++ 類,
在服務實作側,生成的類叫 Service Provider Skeletons;在客戶端側,叫 Service Requester Proxies,對于服務方法,服務請求代理提供同步(呼叫者阻塞,直到 Server 回傳結果)和異步(被調函式立即回傳)呼叫機制,呼叫者可以并行執行其他任務,當服務端回傳結果時,通過 Core Type 的 ara::core::future 接收結果,平臺可以配置生成器生成 mockup 類,當服務尚未開發完成時,便于開發客戶端功能,也可用于客戶端的單元測驗,
客戶端可以直接使用代理類,而 Service Provider Skeletons 只是抽象基類,服務實作需要繼承自生成的抽象基類,實作相應的功能,
ara::com 介面可以為 proxies 和 skeletons 提供安全相關、受 E2E 保護的通信,這些介面旨在確保與應用程式的兼容性,無論是否開啟 E2E 保護,
7.5 靜態、動態配置
通信路徑的配置可能發生在設計、啟動或者運行時,因此配置可以是靜態或者動態的:
- 全靜態配置
完全不需要服務發現,服務端知道所有的客戶端,客戶端也知道服務端, - 客戶應用無需發現
客戶端知道服務端,但服務端不知道客戶端,應用中唯一的動態通信方式就是事件訂閱, - 全服務發現
配置時不知道通信路徑,服務發現 API 允許應用代碼在運行時選擇服務實體,
7.6 服務合同版本控制
SOA(Service Oriented Architecture)環境下,服務的客戶端和提供端依賴覆寫服務介面和行為的合同,服務開發程序中,服務的介面和行為會改變,因此,引入服務合同版本控制來區分不同版本的服務,AP 支持設計、部署階段的服務合同版本控制,不僅如此,客戶端的服務發現可配置為向后兼容,即如果服務版本向后兼容客戶端請求的服務版本,客戶端可以連接到一個不同于其請求版本的服務,
7.7 原始資料流介面
除了面向服務的通信,CM 還提供了用于處理外部 ECU(如 ADAS 系統中的傳感器)原始二進制資料流的獨立、靜態 API,
- 為客戶端應用實作了:建立到服務端的通信通道的功能
- 為服務端應用實作了:等待客戶端連接的功能
- 為客戶端和服務端提供了:銷毀通信通道以及通過通道讀寫原始資料流的功能
原始資料流通道可以由集成配置其部署資訊,包括網路端點資訊、協議等,目前傳輸層使用 TCP/IP 套接字,但今后可能增加其他替代方式,原始資料流介面定義在 ara::com::raw 命名空間中,
更多關于 Adaptive AUTOSAR 文章
https://www.cnblogs.com/tengzijian/category/1995263.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296155.html
標籤:其他
