1. Adaptive AUTOSAR与DaVinci平台概览

Adaptive AUTOSAR 是 AUTOSAR 组织为应对高性能计算、动态部署与车云协同需求而提出的第二套标准体系。它并不是 Classic AUTOSAR 的升级版本,而是面向不同问题域的另一条技术路线。理解这一点,是进入 DaVinci Adaptive 开发流程的前提。

核心理念:面向服务的动态软件架构

Adaptive AUTOSAR 的核心是面向服务通信(SOA)与动态运行环境。应用以进程形式运行在 POSIX 兼容操作系统(如 Linux、QNX)之上,通过 ara::com 提供的服务代理(Proxy)与骨架(Skeleton)进行通信,不再依赖静态配置的 RTE 与信号级 VFB。软件可以在运行时启动、停止、更新,支持 OTA 与功能动态部署。

其关键机制包括:

  • ara::com:服务发现与事件/方法/字段通信,支持 SOME/IP、DDS 等绑定。
  • 执行管理(EM):按 Manifest 描述启动、监控、终止进程。
  • 状态管理(SM):管理 Machine 与 Function Group 状态迁移。
  • 持久化(PER)、诊断(DM)、加密(Crypto)、更新配置(UCM)等平台服务。
  • Manifest:以 ARXML 描述应用、服务、执行与机器配置,是部署的核心输入。

与 Classic AUTOSAR 的差异

Classic 面向深嵌入式、硬实时、静态配置的 ECU,以 RTE + BSW + MCAL 分层,通信以信号和 PDU 为中心,任务调度在编译期确定。Adaptive 面向高性能控制器与中央计算平台,以 C++14/17 应用、服务接口、动态调度为特征。二者在实时性、内存模型、通信抽象、更新能力上差异显著,但并非互斥:在同一整车架构中,Classic 处理安全关键的小控制回路,Adaptive 承担感知融合、网关、OTA 等任务,二者通过 SOME/IP 或信号网关互通。

DaVinci 工具链在 Adaptive 开发中的定位

Vector 的 DaVinci 系列覆盖 Classic 与 Adaptive 两条产品线。在 Adaptive 开发中,主要涉及:

  • DaVinci Adaptive:编辑 ARXML 模型,包括服务接口、应用 Manifest、执行 Manifest、Machine Manifest。
  • DaVinci Configurator:生成平台配置代码与 Manifest 文件。
  • vVIRTUALtarget / 目标板:用于运行与验证 Adaptive 应用。
  • MICROSAR Adaptive:Vector 提供的 Adaptive 平台实现,与 DaVinci 工具链配套。

整体工作流可概括为:在 DaVinci Adaptive 中建立服务接口与应用模型 → 配置执行与机器 Manifest → 生成代码与配置 → 在目标环境编译部署 → 通过日志与 ara::com 监控运行状态。下图展示了这一工作流中模型、工具与运行环境之间的关系。

Adaptive AUTOSAR 开发工作流与 DaVinci 工具链定位 设计阶段 服务接口 (Service Interface) 应用 Manifest 执行 / 机器 Manifest DaVinci Adaptive ARXML 模型编辑 配置校验与生成 代码 / Manifest 输出 目标运行环境 POSIX OS (Linux / QNX) ara::com 服务通信 EM / SM / UCM 平台服务 输入 部署 运行日志 / 服务监控反馈 关键交付物与对应关系 • 服务接口 ARXML → 定义 Proxy / Skeleton 的 C++ 头文件与通信契约 • 执行 Manifest → 描述进程启动参数、依赖库、调度策略与资源限制 • 机器 Manifest → 描述网络绑定、服务发现、平台服务实例与安全策略

从模型到部署:一个最小示例

假设要开发一个车速服务:应用 A 发布 VehicleSpeed 字段,应用 B 订阅。在 DaVinci Adaptive 中,首先定义服务接口 VehicleSpeedInterface,包含一个 speed 字段(类型 uint16,单位 km/h)。随后在应用 Manifest 中声明 A 为 Skeleton 提供者、B 为 Proxy 消费者,并指定服务实例 ID 与通信绑定(如 SOME/IP 端口 30501)。执行 Manifest 中为两个进程分别配置可执行文件路径、启动依赖与重启策略。生成后得到 C++ 头文件与 Manifest ARXML,编译部署到目标板,通过 ara::com 的 FindService 与 Subscribe 即可完成通信。

Adaptive 开发中,Manifest 是连接模型与运行时的桥梁。任何服务实例、进程启动、网络绑定都必须在 Manifest 中显式声明,运行时不会自动推断。

学习路径建议