ผสานรวมมิดเดิลแวร์ที่ปรับขนาดได้และมุ่งเน้นบริการ (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