Integracja SOME/IP z SDV

Zintegruj skalowalne oprogramowanie pośredniczące zorientowane na usługi przez IP (SOME/IP) z pojazdem definiowanym przez oprogramowanie (SDV), wdrażając i konfigurując kilka komponentów. Każda instancja brokera wymaga odpowiedniej lokalnej implementacji stosu. Z tego dokumentu dowiesz się, jak:

  • Konfigurowanie wdrożenia pojedynczego brokera
  • Wdrożenie brokera SOME/IP jako pojedynczej lub wielu instancji
  • Wdróż agenta języka interaktywnych danych usług pojazdu (VSIDL)
  • Używanie Soong z vsidl_rc_generator

Przykładowa konfiguracja

Przykłady SDV, takie jak te dotyczące wirtualnych urządzeń z Androidem Cuttlefish sdv_core_cf i sprzętu sdv_core_arm64, pokazują elastyczny schemat wdrażania. Broker i stos zaczynają działać na podstawie właściwości systemowej czasu rozruchu, ro.boot.sdv.someip.enable.

Pojedynczy schemat wdrażania brokera możesz uzyskać, ustawiając wartość androidboot.sdv.someip.enable=true tylko w jednej z instancji SDV działających w systemie.

# 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

Inny przykład:

#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

Wdrożenie brokera

W przypadku SDV możesz wdrożyć brokera SOME/IP jako jedną lub kilka instancji. Domeny (lub podsieci) SOME/IP można podzielić na różne niezależne instancje. Możesz to zrobić, aby zrównoważyć obciążenie lub zwiększyć izolację ze względów bezpieczeństwa.

Każda instancja musi przetwarzać rozłączne zbiory punktów końcowych SOME/IP i SDV. Nie możesz używać specjalnego kierowania ani synchronizacji między agentami. Nieprawidłowa konfiguracja może prowadzić do duplikowania publikacji lub niespójnych wyników wykrywania usług.

Dostawca języka interaktywnych danych o usługach związanych z pojazdami

SOME/IP pobiera metadane wymagane do tłumaczeń od agenta VSIDL. Musisz wdrożyć agenta VSIDL na tej samej maszynie wirtualnej co broker SOME/IP.

W przypadku użycia z opcją wariantu runtime-config-prebuilts agent VSIDL może wygenerować plik Android.bp. Ten plik zawiera gotowe reguły, które tworzą i wdrażają odpowiednią konfigurację środowiska wykonawczego.

Soong

Aby uruchomić vsidl_rc_generator dostarczony przez SDV:

vsidl_rc_generator [OPTIONS] --catalog-path <CATALOG_PATH> --output-path <OUTPUT_PATH>

Musisz podać te argumenty:

  • --vsidl-path <VSIDL_PATH>
  • --catalog-path <CATALOG_PATH>
  • --output-path <OUTPUT_PATH>

Możesz też podać te argumenty opcjonalne:

  • Opcjonalnie: --dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...

    Określa katalogi zależnych plików proto poza catalog_path. Aby wygenerować interfejs API w języku Rust dla zależnych plików proto, każdy katalog musi zawierać plik Android.bp. Ten plik musi zawierać rust_protobufelement docelowy kompilacji.

  • Opcjonalnie: --variant <VARIANT>

    Domyślnie jest to RuntimeConfig. Określa tryb, w którym musi działać generator konfiguracji środowiska wykonawczego. RuntimeConfig generuje pliki konfiguracji środowiska wykonawczego dla SOME/IP i diagnostyki.

    RuntimeConfigPrebuilts generuje pliki kompilacji. Te pliki zawierają gotowe moduły. Za pomocą tych modułów możesz uwzględniać pliki wygenerowane przez wariant RuntimeConfig w innych modułach lub w obrazie maszyny wirtualnej.

  • Opcjonalnie: --service-bundle-name <SERVICE_BUNDLE_NAME>

    Argument określający pakiet usług, do którego ma być zastosowany generator konfiguracji środowiska wykonawczego.

  • Opcjonalnie: --package-name <PACKAGE_NAME>

    Oprócz argumentu nazwy pakietu usług użyj tego argumentu, aby określić nazwę pakietu usług, do którego ma być zastosowany generator konfiguracji środowiska wykonawczego.

  • Opcjonalnie: --filegroup <FILEGROUP>

    Musi być zdefiniowany, gdy używasz trybu RuntimeConfigPrebuilts.