VSIDL 和中间件概览

车辆服务接口定义语言 (VSIDL) 是一种基于 Protocol Buffers 构建的特定于网域的语言。VSIDL 旨在定义软件定义车辆 (SDV) 中服务软件包之间的接口和互动。如需了解服务包,请参阅服务单元和服务包

VSIDL 提供用于与 SDV 生态系统中的较低级别服务进行交互的接口。您可以使用 VSIDL 指定通过远程过程调用 (RPC)(包括一元、客户端流式传输和服务器流式传输)、数据隧道或 SOME/IP 服务映射进行通信的服务单元,以便与 AUTOSAR 电子控制单元 (ECU) 和 SOME/IP 堆栈(例如 COVESA vsomeip)进行互操作。VSIDLC 生成的代码可处理与 SDV 服务发现的服务单元注册。

借助其他配置文件,VSIDLC 为服务软件包生成的代码可以打包为 APEX,并由 Orchestrator 和 SDV 生命周期管理器控制。

实现 SDV 服务

以下是定义 SDV 中服务软件包之间的接口和互动以及创建用于部署的 APEX 软件包的高级步骤:

  1. 在 protobuf 文件(扩展名为 .proto 的文件)中定义数据结构。使用 protobuf 定义由 VSIDL 定义的服务单元之间交换的数据结构。
  2. 在 VSIDL 文件(扩展名为 .vsidl 的文件)中定义服务架构。VSIDL 用于定义服务包和服务单元。VSIDL 引用由 protobuf 声明的类型(步骤 1)。
  3. 生成中间件。中间件为服务之间的通信和交互提供了一种标准化方式。
  4. 在 Rust 中实现自定义业务逻辑。
  5. 将服务软件包(包括生成的和自定义的业务逻辑代码)打包到 APEX 软件包中以进行部署。
  6. 配置目录以支持自动更新和 IDE。

VSIDLC 的类型系统在两个级别上运行:Protobuf 和 VSIDL。Protobuf 用于定义由 VSIDL 定义的服务单元之间交换的数据结构。本部分介绍了如何在 VSIDL 和 protobuf 中定义数据结构。

后续步骤

下面列出了您接下来可以参阅的文档:

  • 如需了解如何在 protobuf 中定义数据结构,请继续阅读定义数据结构
  • 如需了解 VSIDL 语言的主要元素,请参阅语言规范
  • 如需将 VSIDL 服务映射到外部 SOME/IP 和 AUTOSAR ECU,请参阅 SOME/IP 集成概览