Integrieren Sie die skalierbare dienstorientierte Middleware over IP (SOME/IP) in ein Software-Defined Vehicle (SDV), indem Sie mehrere Komponenten bereitstellen und konfigurieren. Für jede Broker-Instanz ist eine entsprechende lokale Stack-Implementierung erforderlich. In diesem Dokument wird Folgendes beschrieben:
- Einzelnen Broker bereitstellen
- SOME/IP-Broker als einzelne oder mehrere Instanzen bereitstellen
- VSIDL-Agent (Vehicle Services Interactive Data Language) bereitstellen
- Soong mit
vsidl_rc_generatorverwenden
Konfigurationsbeispiel
Die SDV-Beispiele, z. B. für virtuelle Cuttlefish-Android-Geräte
sdv_core_cf und Hardware sdv_core_arm64, veranschaulichen ein flexibles Bereitstellungsschema. Der Broker und der Stack werden jeweils auf Grundlage einer System-Property für die Startzeit, ro.boot.sdv.someip.enable, gestartet.
Sie können ein einzelnes Broker-Bereitstellungsschema erreichen, indem Sie androidboot.sdv.someip.enable=true nur für eine der SDV-Instanzen festlegen, die auf dem System ausgeführt werden.
# 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
Ein weiteres Beispiel:
#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
Broker-Bereitstellung
Sie können den SOME/IP-Broker als einzelne oder als mehrere Instanzen in SDV bereitstellen. Sie können SOME/IP-Domains (oder Subnetze) in verschiedene unabhängige Instanzen aufteilen. Das kann zum Ausgleich der Last oder zur Verbesserung der Isolation aus Sicherheitsgründen erfolgen.
Jede Instanz muss eine disjunkte Menge von SOME/IP- und SDV-Endpunkten verarbeiten. Sie können kein spezielles Routing oder keine agentenübergreifende Synchronisierung verwenden. Eine falsche Konfiguration kann zu doppelten Veröffentlichungen oder inkonsistenten Ergebnissen bei der Dienstermittlung führen.
Interaktive Daten für Fahrzeugdienste – Sprachdienstleister
SOME/IP ruft Metadaten, die für Übersetzungen erforderlich sind, vom VSIDL-Agent ab. Sie müssen den VSIDL-Agent auf derselben VM wie den SOME/IP-Broker bereitstellen.
In Kombination mit der runtime-config-prebuilts-Variantenoption kann der VSIDL-Agent eine Android.bp-Datei generieren. Diese Datei enthält vorgefertigte Regeln zum Erstellen und Bereitstellen der relevanten Laufzeitkonfiguration.
Soong
So führen Sie vsidl_rc_generator aus, das von SDV bereitgestellt wird:
vsidl_rc_generator [OPTIONS] --catalog-path <CATALOG_PATH> --output-path <OUTPUT_PATH>
Sie müssen die folgenden Argumente angeben:
--vsidl-path <VSIDL_PATH>--catalog-path <CATALOG_PATH>--output-path <OUTPUT_PATH>
Sie können auch die folgenden optionalen Argumente angeben:
Optional:
--dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...Gibt die Verzeichnisse der abhängigen Protos außerhalb von
catalog_pathan. Zum Generieren der Rust-API für die abhängigen Protos muss jedes Verzeichnis eineAndroid.bp-Datei enthalten. Diese Datei muss einrust_protobuf-Build-Ziel enthalten.Optional:
--variant <VARIANT>Der Standardwert ist
RuntimeConfig. Gibt den Modus an, in dem der Generator für die Laufzeitkonfiguration ausgeführt werden muss.RuntimeConfiggeneriert Laufzeitkonfigurationsdateien für SOME/IP und die Diagnose.RuntimeConfigPrebuiltsgeneriert Build-Dateien. Diese Dateien enthalten vorgefertigte Module. Sie können diese Module verwenden, um Dateien, die von derRuntimeConfig-Variante generiert wurden, in andere Module oder in das VM-Image einzufügen.Optional:
--service-bundle-name <SERVICE_BUNDLE_NAME>Argument zum Angeben des Service-Bundles, auf das der Generator für die Laufzeitkonfiguration angewendet werden soll.
Optional:
--package-name <PACKAGE_NAME>Verwenden Sie dieses Argument zusätzlich zum Argument für den Namen des Dienstbündels, um den Paketnamen des Dienstbündels anzugeben, auf das der Generator für die Laufzeitkonfiguration angewendet werden soll.
Optional:
--filegroup <FILEGROUP>Muss definiert werden, wenn der Modus
RuntimeConfigPrebuiltsverwendet wird.