1. DaVinci Developer 概述:AUTOSAR 简介、工具角色与界面初探

各位同学,欢迎来到《DaVinci Developer 从入门到精通》的第一章。

说实话,我接触 AUTOSAR 也有十多年了。记得刚入行那会儿,国内做 AUTOSAR 配置的公司一只手数得过来。那时候没有 DaVinci Developer,大家还在用 Excel 表格手动维护 SWC 接口,一个不小心就漏掉一个 RPort,编译报错能找半天。后来项目上了 Vector 的工具链,我才真正体会到什么叫「专业的事交给专业的工具」。

这一章,我们先不急着敲键盘。先把 DaVinci Developer 在整个 AUTOSAR 开发里扮演什么角色搞清楚。地基打牢了,后面学起来才顺手。

1.1 什么是 AUTOSAR?为什么我们需要它?

AUTOSAR(AUTomotive Open System ARchitecture)是一个全球性的汽车电子软件架构标准。说白了,它就是为了解决一个核心问题:让不同供应商的软件模块能像乐高积木一样拼在一起。

你想想看,一辆高端汽车里可能有上百个 ECU,每个 ECU 里的 MCU 来自不同厂家,操作系统、通信栈、诊断栈又来自不同供应商。如果没有统一标准,每换一个芯片,底层代码就得重写一遍。这个成本谁也扛不住。

AUTOSAR 把软件分成了三层:

层次 全称 一句话理解
应用层(ASW) Application Software 写业务逻辑的地方,比如车窗控制、雨刮策略
运行时环境(RTE) Runtime Environment 应用层和底层之间的「通信桥梁」
基础软件层(BSW) Basic Software 操作系统、CAN 驱动、诊断栈等底层服务

我在一个量产项目里遇到过这样的情况:客户要求把 NXP 的芯片换成 Infineon 的。因为我们的应用层完全按照 AUTOSAR 标准开发,只改了 BSW 配置和 RTE 生成,应用层代码一行没动。这就是 AUTOSAR 的价值——硬件无关性。

核心要点:AUTOSAR 不是一套代码,而是一套方法论和接口规范。它定义了「模块之间怎么说话」,而不是「模块内部怎么干活」。

1.2 DaVinci Developer 在 AUTOSAR 开发中的角色

好,那 DaVinci Developer 是干什么的?

它是 Vector 公司出的一款图形化配置工具,专门用来做 AUTOSAR 应用层软件组件(SWC)的设计与配置。

我个人的理解是:如果把 AUTOSAR 项目比作盖房子,那 DaVinci Developer 就是「建筑设计院」。它负责画图纸——定义每个软件组件有哪些输入输出端口、端口的数据类型、组件之间的连接关系。至于「施工队」(代码生成器)和「监理」(RTE 生成器),那是其他工具的事。

具体来说,DaVinci Developer 主要干这几件事:

  1. 创建和编辑 SWC(软件组件)——定义组件的端口、接口、内部行为。
  2. 设计组合结构(Composition)——把多个 SWC 组装在一起,画连线图。
  3. 配置数据类型——实现数据类型、接口、端口之间的映射。
  4. 生成 ARXML——AUTOSAR 的标准化描述文件,供其他工具使用。
  5. 导入/导出与团队协作——多人并行开发时,通过 ARXML 交换设计。

我的经验:很多新手容易把 DaVinci Developer 和 DaVinci Configurator Pro 搞混。记住一句话:Developer 管应用层(SWC),Configurator 管底层(BSW)。两个工具分工不同,但通过 ARXML 文件协同工作。

下面这张图展示了 DaVinci Developer 在 AUTOSAR 开发流程中的位置:

DaVinci Developer 在 AUTOSAR 开发流程中的位置 系统需求 SWC 接口定义 DaVinci Developer SWC 设计 · 端口配置 Composition · ARXML 生成 ARXML 文件 标准化接口描述 DaVinci Configurator BSW 配置 · 代码生成 RTE 生成器 RTE 代码 · 调度表 最终生成:可编译的 C 代码 + RTE + 配置 说明:DaVinci Developer 输出 ARXML,供 Configurator 和 RTE 生成器使用,三者协同完成 AUTOSAR 代码生成

1.3 工具界面概览与基本操作

安装好 DaVinci Developer 之后,第一次打开,你可能会觉得界面有点「密」。别慌,我带你走一遍核心区域。

1.3.1 主界面布局

工具启动后,默认布局分为以下几个主要区域:

区域名称 位置 主要用途
Project Explorer 左侧 浏览项目中的 SWC、Composition、数据类型等元素
Editor Area 中央 图形化编辑 SWC 端口、Composition 连线、表格配置
Properties View 下方 显示选中元素的详细属性,如端口名、数据类型、触发方式
Outline 右侧 快速导航当前编辑文件的内部结构
Toolbar 顶部 常用操作按钮:新建、保存、生成代码、校验等

注意:我曾经见过有同事把 Properties View 不小心关掉了,找了半天不知道怎么改端口名。如果你也遇到类似情况,去菜单栏 Window → Show View → Properties 就能找回来。

1.3.2 第一个操作:新建一个 SWC

我们动手做一个小练习。跟着我走一遍:

  1. 点击工具栏的 New → Software Component。
  2. 在弹出的对话框中,选择 Application SWC 类型。
  3. 输入名称,比如 SwcDoorControl。
  4. 点击 Finish。

你会看到 Project Explorer 里多了一个 SwcDoorControl 节点。双击它,中央编辑器会打开一个空白的 SWC 画布。

这时候,你可以从右侧的 Palette(调色板)拖拽一个 RPort 和一个 PPort 到画布上。嗯,这里要注意:RPort 是接收数据的端口,PPort 是发送数据的端口。命名规范我建议用 RPort_ 和 PPort_ 开头,后面跟接口名,比如 RPort_DoorStatus。

我的习惯:每次新建 SWC 之后,第一件事就是去 Properties View 里把 SwcImpl 字段填上。这个字段决定了生成的 C 代码文件名。如果不填,生成器会随机生成一个名字,后期维护起来很痛苦。

1.3.3 保存与 ARXML 导出

设计完成后,按 Ctrl + S 保存。DaVinci Developer 默认保存为 .dpa 格式(项目文件)和 .dpa 内部结构文件。

要导出 ARXML,右键点击项目根节点,选择 Export → ARXML。你会得到一个 .arxml 文件,这就是 AUTOSAR 世界的「通用语言」。

// 生成的 ARXML 片段示例(简化版)
<AR-PACKAGE>
  <SHORT-NAME>SwcDoorControl</SHORT-NAME>
  <ELEMENTS>
    <APPLICATION-SW-COMPONENT-TYPE>
      <SHORT-NAME>SwcDoorControl</SHORT-NAME>
      <PORTS>
        <R-PORT-PROTOTYPE>
          <SHORT-NAME>RPort_DoorStatus</SHORT-NAME>
        </R-PORT-PROTOTYPE>
      </PORTS>
    </APPLICATION-SW-COMPONENT-TYPE>
  </ELEMENTS>
</AR-PACKAGE>

你看,ARXML 其实就是 XML 的一种方言。它用标签来描述 SWC 的结构。DaVinci Developer 帮你自动生成这些,你不需要手写。

1.4 本章小结

这一章我们聊了三个事:

  • AUTOSAR 是什么——一套让汽车软件模块化、标准化的架构。
  • DaVinci Developer 的角色——专门负责应用层 SWC 的设计和 ARXML 生成。
  • 工具界面和基本操作——认识了五大区域,亲手建了一个 SWC,导出了 ARXML。

说实话,第一章的内容看起来简单,但它是后面所有操作的基础。我见过太多人一上来就急着画 Composition 连线,结果端口类型配错了,RTE 生成报一堆错,回头再改更浪费时间。