SOME/IP in SDV einbinden

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_generator verwenden

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_path an. Zum Generieren der Rust-API für die abhängigen Protos muss jedes Verzeichnis eine Android.bp-Datei enthalten. Diese Datei muss ein rust_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. RuntimeConfig generiert Laufzeitkonfigurationsdateien für SOME/IP und die Diagnose.

    RuntimeConfigPrebuilts generiert Build-Dateien. Diese Dateien enthalten vorgefertigte Module. Sie können diese Module verwenden, um Dateien, die von der RuntimeConfig-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 RuntimeConfigPrebuilts verwendet wird.