いくつかのコンポーネントをデプロイして構成することで、スケーラブルなサービス指向ミドルウェア over IP(SOME/IP)をソフトウェア定義車両(SDV)と統合します。各ブローカー インスタンスには、対応するローカル スタック実装が必要です。このドキュメントでは、次の方法について説明します。
- 単一ブローカーのデプロイを構成する
- SOME/IP ブローカーを単一または複数のインスタンスとしてデプロイする
- 車両サービス インタラクティブ データ言語(VSIDL)エージェントをデプロイする
vsidl_rc_generatorで Soong を使用する
構成の例
Cuttlefish 仮想 Android デバイス
sdv_core_cf やハードウェア sdv_core_arm64 などの SDV の例は、柔軟なデプロイ スキーマを示しています。ブローカーとスタックはそれぞれ、起動時のシステム プロパティ ro.boot.sdv.someip.enable に基づいて起動します。
システムで実行されている SDV インスタンスの 1 つだけに androidboot.sdv.someip.enable=true を設定することで、単一のブローカー デプロイ スキーマを実現できます。
# device/google/sdv/sdv_core_base/sdv.agents.rc
# Declare and start the SDV SOME/IP broker agent.
service sdv_someip_broker_agent /system_ext/bin/sdv_someip_broker_agent_comms
class core
disabled
user system_ext_sdv_someip
group system
on property:ro.sdv.orchestrator.state.ready=true && property:ro.boot.sdv.someip.enable=true
start sdv_someip_broker_agent
別の例を示します。
#device/google/sdv/sdv_core_cf/init.sdv_core_cf.rc
# Declare and start the sample SDV SOME/IP stack agent.
service sdv_someip_stack_agent /vendor/bin/sdv_someip_stack_agent
class core
disabled
user system
group system
setenv VSOMEIP_CONFIGURATION /vendor/etc/someip/vsomeip_config.json
setenv VSOMEIP_BASE_PATH /data/vendor/vsomeip/
on property:dev.bootcomplete=1 && property:ro.boot.sdv.someip.enable=true
start sdv_someip_stack_agent
ブローカーのデプロイ
SOME/IP ブローカーは、SDV で単一インスタンスまたは複数インスタンスとしてデプロイできます。SOME/IP ドメイン(またはサブネット)を異なる独立したインスタンスに分割できます。これは、ロード バランシングやセキュリティ目的の分離を改善するために行います。
各インスタンスは、SOME/IP エンドポイントと SDV エンドポイントの重複しないセットを処理する必要があります。特別なルーティングやエージェント間の同期は使用できません。構成が正しくないと、重複したパブリケーションやサービス検出結果の不整合が発生する可能性があります。
車両サービス インタラクティブ データ言語プロバイダ
SOME/IP は、VSIDL エージェントから変換に必要なメタデータを取得します。VSIDL エージェントは、SOME/IP ブローカーと同じ VM にデプロイする必要があります。
runtime-config-prebuilts バリアント オプションとともに使用すると、VSIDL エージェントは Android.bp ファイルを生成できます。このファイルには、関連するランタイム構成をビルドしてデプロイする事前構築済みルールが含まれています。
Soong
SDV が提供する vsidl_rc_generator を実行するには:
vsidl_rc_generator [OPTIONS] --catalog-path <CATALOG_PATH> --output-path <OUTPUT_PATH>
次の引数を指定する必要があります。
--vsidl-path <VSIDL_PATH>--catalog-path <CATALOG_PATH>--output-path <OUTPUT_PATH>
次のオプション引数を指定することもできます。
省略可:
--dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...catalog_pathの外部にある依存プロトのディレクトリを指定します。依存する proto の Rust API を生成するには、各ディレクトリにAndroid.bpファイルが含まれている必要があります。このファイルにはrust_protobufビルド ターゲットが含まれている必要があります。省略可:
--variant <VARIANT>デフォルトは
RuntimeConfigで、ランタイム構成ジェネレータが実行されるモードを指定します。RuntimeConfigは、SOME/IP と診断用のランタイム構成ファイルを生成します。RuntimeConfigPrebuiltsはビルドファイルを生成します。これらのファイルには、ビルド済みのモジュールが含まれています。これらのモジュールを使用すると、RuntimeConfigバリアントで生成されたファイルを他のモジュールや VM イメージに含めることができます。省略可:
--service-bundle-name <SERVICE_BUNDLE_NAME>ランタイム構成ジェネレータを適用するサービス バンドルを指定する引数。
省略可:
--package-name <PACKAGE_NAME>この引数は、サービス バンドル名引数に加えて、ランタイム構成ジェネレータを適用するサービス バンドル パッケージ名を指定するために使用します。
省略可:
--filegroup <FILEGROUP>RuntimeConfigPrebuiltsモードを使用する場合は定義する必要があります。