Tích hợp phần mềm trung gian có khả năng mở rộng, hướng đến dịch vụ qua IP (SOME/IP) với xe được xác định bằng phần mềm (SDV) bằng cách triển khai và định cấu hình một số thành phần. Mỗi thực thể môi giới đều yêu cầu một cách triển khai ngăn xếp cục bộ tương ứng. Tài liệu này mô tả cách:
- Định cấu hình một lần triển khai môi giới
- Triển khai môi giới SOME/IP dưới dạng một hoặc nhiều thực thể
- Triển khai tác nhân ngôn ngữ dữ liệu tương tác dịch vụ xe (VSIDL)
- Sử dụng Soong với
vsidl_rc_generator
Cấu hình mẫu
Các ví dụ về SDV, chẳng hạn như các ví dụ về thiết bị Android ảo Cuttlefish
sdv_core_cf và phần cứng sdv_core_arm64, minh hoạ một lược đồ triển khai linh hoạt. Mỗi môi giới và ngăn xếp đều bắt đầu dựa trên một thuộc tính hệ thống thời gian khởi động, ro.boot.sdv.someip.enable.
Bạn có thể đạt được một lược đồ triển khai môi giới bằng cách chỉ đặt androidboot.sdv.someip.enable=true trên một trong các thực thể SDV đang chạy trên hệ thống.
# 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
Một ví dụ khác:
#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
Triển khai môi giới
Bạn có thể triển khai môi giới SOME/IP dưới dạng một hoặc nhiều thực thể trong SDV. Bạn có thể chia các miền SOME/IP (hoặc mạng con) thành nhiều thực thể độc lập. Bạn có thể thực hiện việc này để cân bằng tải hoặc cải thiện khả năng cô lập vì mục đích bảo mật.
Mỗi thực thể phải xử lý một tập hợp các điểm cuối SOME/IP và SDV không liên quan. Bạn không thể sử dụng tính năng định tuyến đặc biệt hoặc đồng bộ hoá giữa các tác nhân. Cấu hình không đúng cách có thể dẫn đến việc xuất bản trùng lặp hoặc kết quả phát hiện dịch vụ không nhất quán.
Nhà cung cấp ngôn ngữ dữ liệu tương tác dịch vụ xe
SOME/IP nhận siêu dữ liệu cần thiết cho bản dịch từ tác nhân VSIDL. Bạn phải triển khai tác nhân VSIDL vào cùng một VM với môi giới SOME/IP.
Khi được dùng với tuỳ chọn biến thể runtime-config-prebuilts, tác nhân VSIDL có thể tạo tệp Android.bp. Tệp này chứa các quy tắc dựng sẵn để xây dựng và triển khai cấu hình thời gian chạy có liên quan.
Soong
Cách chạy vsidl_rc_generator do SDV cung cấp:
vsidl_rc_generator [OPTIONS] --catalog-path <CATALOG_PATH> --output-path <OUTPUT_PATH>
Bạn phải cung cấp các đối số sau:
--vsidl-path <VSIDL_PATH>--catalog-path <CATALOG_PATH>--output-path <OUTPUT_PATH>
Bạn cũng có thể cung cấp các đối số không bắt buộc sau:
Không bắt buộc:
--dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...Chỉ định các thư mục của proto phụ thuộc bên ngoài
catalog_path. Để tạo API Rust cho proto phụ thuộc, mỗi thư mục phải chứa một tệpAndroid.bp. Tệp này phải bao gồm mục tiêu bản dựngrust_protobuf.Không bắt buộc:
--variant <VARIANT>Giá trị mặc định là
RuntimeConfigvà chỉ định chế độ mà trình tạo cấu hình thời gian chạy phải chạy.RuntimeConfigtạo các tệp cấu hình thời gian chạy cho SOME/IP và chẩn đoán.RuntimeConfigPrebuiltstạo các tệp bản dựng. Các tệp này chứa các mô-đun dựng sẵn. Bạn có thể sử dụng các mô-đun này để đưa các tệp do biến thểRuntimeConfigtạo vào các mô-đun khác hoặc trong hình ảnh VM.Không bắt buộc:
--service-bundle-name <SERVICE_BUNDLE_NAME>Đối số để chỉ định gói dịch vụ mà bạn muốn áp dụng trình tạo cấu hình thời gian chạy.
Không bắt buộc:
--package-name <PACKAGE_NAME>Ngoài đối số tên gói dịch vụ, hãy sử dụng đối số này để chỉ định tên gói dịch vụ mà bạn muốn áp dụng trình tạo cấu hình thời gian chạy.
Không bắt buộc:
--filegroup <FILEGROUP>Phải được xác định khi sử dụng chế độ
RuntimeConfigPrebuilts.