ผสานรวม SOME/IP กับ SDV

ผสานรวมมิดเดิลแวร์ที่ปรับขนาดได้และมุ่งเน้นบริการ (SOME/IP) ผ่าน IP กับ ยานพาหนะที่กำหนดโดยซอฟต์แวร์ (SDV) ด้วยการทำให้ใช้งานได้และกำหนดค่าคอมโพเนนต์หลายรายการ อินสแตนซ์ของโบรกเกอร์แต่ละรายการต้องมีการใช้งานสแต็กในเครื่องที่เกี่ยวข้อง เอกสารนี้อธิบายวิธีดำเนินการต่อไปนี้

  • กำหนดค่าการทำให้ใช้งานได้ของโบรกเกอร์รายการเดียว
  • ทำให้โบรกเกอร์ SOME/IP ใช้งานได้เป็นอินสแตนซ์เดียวหรือหลายอินสแตนซ์
  • ทำให้เอเจนต์ Vehicle Services Interactive Data Language (VSIDL) ใช้งานได้
  • ใช้ Soong กับ vsidl_rc_generator

ตัวอย่างการกำหนดค่า

ตัวอย่าง SDV เช่น ตัวอย่างสำหรับ อุปกรณ์ Android เสมือน Cuttlefish sdv_core_cf และฮาร์ดแวร์ sdv_core_arm64 แสดงให้เห็นถึงสคีมาการทำให้ใช้งานได้ที่ยืดหยุ่น โบรกเกอร์และสแต็กแต่ละรายการจะเริ่มต้นโดยอิงตามพร็อพเพอร์ตี้ระบบเวลาบูต ro.boot.sdv.someip.enable

คุณสามารถสร้างสคีมาการทำให้ใช้งานได้ของโบรกเกอร์รายการเดียวได้โดยการตั้งค่า androidboot.sdv.someip.enable=true ในอินสแตนซ์ SDV เพียงอินสแตนซ์เดียวที่ทำงานในระบบ

# 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

ตัวอย่างอื่น

#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

การทำให้ใช้งานได้ของโบรกเกอร์

คุณสามารถทำให้โบรกเกอร์ SOME/IP ใช้งานได้เป็นอินสแตนซ์เดียวหรือหลายอินสแตนซ์ใน SDV คุณสามารถแยกโดเมน (หรือซับเน็ต) SOME/IP ออกเป็นอินสแตนซ์อิสระต่างๆ ได้ คุณสามารถทำเช่นนี้เพื่อปรับสมดุลโหลดหรือเพื่อปรับปรุงการแยกเพื่อวัตถุประสงค์ด้านความปลอดภัย

แต่ละอินสแตนซ์ต้องประมวลผลชุดปลายทาง SOME/IP และ SDV ที่แยกกัน คุณไม่สามารถใช้การกำหนดเส้นทางพิเศษหรือการซิงค์ข้ามเอเจนต์ การกำหนดค่าที่ไม่ถูกต้องอาจทำให้เกิดการเผยแพร่ซ้ำหรือผลลัพธ์การค้นพบบริการที่ไม่สอดคล้องกัน

ผู้ให้บริการ Vehicle Services Interactive Data Language

SOME/IP จะรับข้อมูลเมตาที่จำเป็นสำหรับการแปลจากเอเจนต์ VSIDL คุณต้องทำให้เอเจนต์ VSIDL ใช้งานได้ใน VM เดียวกับโบรกเกอร์ SOME/IP

เมื่อใช้กับตัวเลือกตัวแปร runtime-config-prebuilts เอเจนต์ VSIDL จะสร้างไฟล์ Android.bp ได้ ไฟล์นี้มีกฎที่สร้างไว้ล่วงหน้าซึ่งสร้างและทำให้การกำหนดค่ารันไทม์ที่เกี่ยวข้องใช้งานได้

Soong

วิธีเรียกใช้ vsidl_rc_generator ที่ SDV มีให้

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

คุณต้องระบุอาร์กิวเมนต์ต่อไปนี้

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

นอกจากนี้ คุณยังระบุอาร์กิวเมนต์ที่ไม่บังคับต่อไปนี้ได้ด้วย

  • ไม่บังคับ: --dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...

    ระบุไดเรกทอรีของโปรโตที่ขึ้นอยู่กับภายนอก catalog_path หากต้องการสร้าง Rust API สำหรับโปรโตที่ขึ้นอยู่กับ ไดเรกทอรีแต่ละรายการต้องมีไฟล์ Android.bp ไฟล์นี้ต้องมีเป้าหมายการสร้าง rust_protobuf

  • ไม่บังคับ: --variant <VARIANT>

    ค่าเริ่มต้นคือ RuntimeConfig และระบุโหมดที่เครื่องมือสร้างการกำหนดค่ารันไทม์ต้องทำงาน RuntimeConfig จะสร้างไฟล์การกำหนดค่ารันไทม์สำหรับ SOME/IP และการวินิจฉัย

    RuntimeConfigPrebuilts จะสร้างไฟล์การสร้าง ไฟล์เหล่านี้มีโมดูลที่สร้างไว้ล่วงหน้า คุณสามารถใช้โมดูลเหล่านี้เพื่อรวมไฟล์ที่สร้างโดยตัวแปร RuntimeConfig ในโมดูลอื่นๆ หรือในอิมเมจ VM

  • ไม่บังคับ: --service-bundle-name <SERVICE_BUNDLE_NAME>

    อาร์กิวเมนต์เพื่อระบุชุดบริการที่จะใช้เครื่องมือสร้างการกำหนดค่ารันไทม์

  • ไม่บังคับ: --package-name <PACKAGE_NAME>

    นอกเหนือจากอาร์กิวเมนต์ชื่อชุดบริการแล้ว ให้อาร์กิวเมนต์นี้เพื่อระบุชื่อแพ็กเกจชุดบริการที่จะใช้เครื่องมือสร้างการกำหนดค่ารันไทม์

  • ไม่บังคับ: --filegroup <FILEGROUP>

    ต้องกำหนดเมื่อใช้โหมด RuntimeConfigPrebuilts