Tích hợp SOME/IP với SDV

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ệp Android.bp. Tệp này phải bao gồm mục tiêu bản dựng rust_protobuf.

  • Không bắt buộc: --variant <VARIANT>

    Giá trị mặc định là RuntimeConfig và chỉ định chế độ mà trình tạo cấu hình thời gian chạy phải chạy. RuntimeConfig tạo các tệp cấu hình thời gian chạy cho SOME/IP và chẩn đoán.

    RuntimeConfigPrebuilts tạ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ể RuntimeConfig tạ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.