Intégrez le middleware évolutif orienté services sur IP (SOME/IP) au véhicule défini par logiciel (SDV) en déployant et en configurant plusieurs composants. Chaque instance d'agent nécessite une implémentation de pile locale correspondante. Ce document explique comment :
- configurer un déploiement d'agent unique ;
- déployer l'agent SOME/IP en tant qu'instance unique ou multiple ;
- déployer l'agent VSIDL (Vehicle Services Interactive Data Language) ;
- utiliser Soong avec
vsidl_rc_generator.
Exemple de configuration
Les exemples de SDV, tels que ceux pour les appareils Android virtuels Cuttlefish
sdv_core_cf et le matériel sdv_core_arm64, illustrent un schéma de déploiement flexible. L'agent et la pile démarrent chacun en fonction d'une propriété système au moment du démarrage, ro.boot.sdv.someip.enable.
Vous pouvez obtenir un schéma de déploiement d'agent unique en définissant androidboot.sdv.someip.enable=true sur une seule des instances de SDV exécutées sur le système.
# 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
Prenons cet autre exemple :
#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
Déploiement de l'agent
Vous pouvez déployer l'agent SOME/IP en tant qu'instance unique ou multiple dans SDV. Vous pouvez diviser les domaines SOME/IP (ou les sous-réseaux) en différentes instances indépendantes. Vous pouvez le faire pour équilibrer la charge ou améliorer l'isolation à des fins de sécurité.
Chaque instance doit traiter un ensemble disjoint de points de terminaison SOME/IP et SDV. Vous ne pouvez pas utiliser de routage spécial ni de synchronisation entre agents. Une configuration incorrecte peut entraîner des publications en double ou des résultats de détection de service incohérents.
Fournisseur de langage de données interactif pour les services de véhicules
SOME/IP obtient les métadonnées requises pour les traductions de l'agent VSIDL. Vous devez déployer l'agent VSIDL sur la même VM que l'agent SOME/IP.
Lorsqu'il est utilisé avec l'option de variante runtime-config-prebuilts, l'agent VSIDL peut générer un fichier Android.bp. Ce fichier contient des règles prédéfinies qui compilent et déploient la configuration d'exécution pertinente.
Soong
Pour exécuter vsidl_rc_generator fourni par SDV :
vsidl_rc_generator [OPTIONS] --catalog-path <CATALOG_PATH> --output-path <OUTPUT_PATH>
Vous devez fournir les arguments suivants :
--vsidl-path <VSIDL_PATH>--catalog-path <CATALOG_PATH>--output-path <OUTPUT_PATH>
Vous pouvez également fournir les arguments facultatifs suivants :
Facultatif :
--dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...Spécifie les répertoires des protos dépendants en dehors de
catalog_path. Pour générer l'API Rust pour les protos dépendants, chaque répertoire doit contenir un fichierAndroid.bp. Ce fichier doit inclure une cible de compilationrust_protobuf.Facultatif :
--variant <VARIANT>La valeur par défaut est
RuntimeConfiget spécifie le mode dans lequel le générateur de configuration d'exécution doit s'exécuter.RuntimeConfiggénère des fichiers de configuration d'exécution pour SOME/IP et les diagnostics.RuntimeConfigPrebuiltsgénère des fichiers de compilation. Ces fichiers contiennent des modules prédéfinis. Vous pouvez utiliser ces modules pour inclure des fichiers générés par la varianteRuntimeConfigdans d'autres modules ou dans l'image de VM.Facultatif :
--service-bundle-name <SERVICE_BUNDLE_NAME>Argument permettant de spécifier le bundle de services sur lequel appliquer le générateur de configuration d'exécution.
Facultatif :
--package-name <PACKAGE_NAME>En plus de l'argument de nom de bundle de services, utilisez cet argument pour spécifier le nom de package du bundle de services sur lequel appliquer le générateur de configuration d'exécution.
Facultatif :
--filegroup <FILEGROUP>Doit être défini lorsque vous utilisez le mode
RuntimeConfigPrebuilts.