SOME/IP'yi SDV ile entegre etme

Çeşitli bileşenleri dağıtıp yapılandırarak ölçeklenebilir hizmet odaklı ara yazılımı IP üzerinden (SOME/IP) yazılımla tanımlanmış araçla (SDV) entegre edin. Her aracı örneği için karşılık gelen bir yerel yığın uygulaması gerekir. Bu belgede aşağıdakilerin nasıl yapılacağı açıklanmaktadır:

  • Tek aracı dağıtımı yapılandırma
  • SOME/IP aracısını tek veya birden fazla örnek olarak dağıtın
  • Araç hizmetleri etkileşimli veri dili (VSIDL) aracısını dağıtma
  • Soong'u vsidl_rc_generator ile kullanma

Örnek yapılandırma

Cuttlefish sanal Android cihazları sdv_core_cf ve donanım sdv_core_arm64 gibi SDV örnekleri, esnek bir dağıtım şeması gösterir. Aracı ve yığın, önyükleme süresi sistem özelliğine göre başlatılır. ro.boot.sdv.someip.enable.

Sistemde çalışan SDV örneklerinden yalnızca birinde androidboot.sdv.someip.enable=true ayarını yaparak tek bir aracı dağıtım şeması elde edebilirsiniz.

# 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

Başka bir örnek:

#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

Aracı dağıtımı

SOME/IP aracısını SDV'de tek veya birden fazla örnek olarak dağıtabilirsiniz. SOME/IP alanlarını (veya alt ağları) farklı bağımsız örneklere bölebilirsiniz. Yükü dengelemek veya güvenlik amacıyla izolasyonu iyileştirmek için bunu yapabilirsiniz.

Her örnek, SOME/IP ve SDV uç noktalarının ayrık bir kümesini işlemelidir. Özel yönlendirme veya temsilciler arası senkronizasyon kullanamazsınız. Yanlış yapılandırma, yayınların yinelenmesine veya tutarsız hizmet keşfi sonuçlarına yol açabilir.

Araç hizmetleri etkileşimli veri dili sağlayıcısı

SOME/IP, çeviriler için gereken meta verileri VSIDL aracısından alır. VSIDL aracısını SOME/IP aracısı ile aynı sanal makineye dağıtmanız gerekir.

runtime-config-prebuilts varyant seçeneğiyle kullanıldığında VSIDL aracısı, Android.bp dosyası oluşturabilir. Bu dosya, ilgili çalışma zamanı yapılandırmasını oluşturan ve dağıtan önceden oluşturulmuş kurallar içerir.

Soong

SDV tarafından sağlanan vsidl_rc_generator'yı çalıştırmak için:

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

Şu bağımsız değişkenleri sağlamanız gerekir:

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

Aşağıdaki isteğe bağlı bağımsız değişkenleri de sağlayabilirsiniz:

  • İsteğe bağlı: --dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...

    Bağımlı proto'ların catalog_path dışındaki dizinlerini belirtir. Bağımlı proto'lar için Rust API'yi oluşturmak üzere her dizin bir Android.bp dosyası içermelidir. Bu dosya bir rust_protobuf derleme hedefi içermelidir.

  • İsteğe bağlı: --variant <VARIANT>

    Varsayılan olarak RuntimeConfig değerini alır ve çalışma zamanı yapılandırma oluşturucunun çalışması gereken modu belirtir. RuntimeConfig, SOME/IP ve teşhis için çalışma zamanı yapılandırma dosyaları oluşturur.

    RuntimeConfigPrebuilts, derleme dosyaları oluşturur. Bu dosyalar, önceden oluşturulmuş modüller içerir. Bu modülleri kullanarak RuntimeConfig varyantı tarafından oluşturulan dosyaları diğer modüllere veya VM görüntüsüne ekleyebilirsiniz.

  • İsteğe bağlı: --service-bundle-name <SERVICE_BUNDLE_NAME>

    Çalışma zamanı yapılandırma oluşturucunun uygulanacağı hizmet paketini belirtmek için kullanılan bağımsız değişken.

  • İsteğe bağlı: --package-name <PACKAGE_NAME>

    Bu bağımsız değişkeni, hizmet paketi adı bağımsız değişkenine ek olarak, çalışma zamanı yapılandırma oluşturucunun uygulanacağı hizmet paketi paket adını belirtmek için kullanın.

  • İsteğe bağlı: --filegroup <FILEGROUP>

    RuntimeConfigPrebuilts modu kullanılırken tanımlanmalıdır.