發揮最佳效能

基本 SOME/IP 轉譯功能旨在提供可更新的解決方案,以整合 AUTOSAR 服務。代理程式的主要挑戰是轉譯編譯時未知的訊息和 RPC 呼叫。為解決這個問題,執行階段更新會假設 SDV 服務的動態新增或更新,類似於導入新單元類型的方式。

這項動態翻譯解決方案是以執行階段型別資訊 (RTTI) 為基礎。代理程式會取用所有已安裝服務套件的設定,並使用該設定中的資料結構定義執行以反射為基礎的翻譯。

雖然以 RTTI 為基礎的轉譯提供彈性,但本質上比預先編譯的方法慢。如要最佳化負載量大的資料路徑,請使用可略過翻譯的技術。

為支援大量且頻繁的訊息消耗,SDV 可讓您略過翻譯,並將 SOME/IP 格式的位元組轉送至消費者服務套件。

服務套件會處理 SOME/IP 格式的酬載,可取用酬載或將酬載轉換為 protobuf。

在 SOME/IP 對應檔案中,為事件指定 message_translation_mode: INTERPRET_AS_BYTES,即可略過翻譯。請參閱 samples/some_ip/catalog/integration_test/byte_forward_someip.vsidl中的範例。

翻譯方法的優缺點

選擇翻譯方法時,請考量以下取捨條件:

  • 系統互動:如果不知道原始格式的詳細資料,其他 SDV 服務就無法解讀以 SOME/IP 格式轉送的位元組。舉例來說,SDV Telemetry 無法處理這類訊息的個別欄位。

  • 額外工作:如要翻譯 SOME/IP 格式的原始酬載,服務套件開發人員必須付出額外心力。

程式庫產生器

SDV 提供自動產生器,可翻譯 SOME/IP 格式。這個產生器會根據可用的訊息定義和對應項目建立程式庫,以便直接翻譯,不必進行反射。取用轉送 SOME/IP 位元組的服務套裝組合可以使用產生的程式庫。

建議:只有在 OEM 識別出無法在專案效能需求內轉換的效能關鍵事件時,才使用產生器。在這種情況下,OEM 應已具備用於 RTTI 型轉換的 protobuf 定義和 SOME/IP 對應。這項設定可做為產生器的輸入內容。詳情請參閱 core_services/tools/someip_translation_generator/ 目錄中的 README.md 檔案。