3. 开发环境搭建:Vector DaVinci Developer 安装与配置、EB tresos Studio 安装与配置、编译器与调试器配置、工程文件结构解析

说实话,很多新手学 AutoSAR 卡住的第一关,不是概念不懂,而是环境搭不起来。我见过不少同事,工具链装了两天,最后连个 Demo 工程都跑不通。嗯,这一章我们就来把这几个核心工具捋清楚。

3.1 工具链全景图

在 AutoSAR CP 开发中,我们通常需要三样东西:配置工具、代码生成器、编译调试链。我个人习惯把它们分成三层来看:

AutoSAR CP 开发工具链三层架构 配置工具层 DaVinci Developer(SWC 设计) + EB tresos Studio(BSW/MCAL 配置) 代码生成层 生成 RTE、BSW、MCAL 代码 编译调试层 编译器(GCC/Tasking/Green Hills)+ 调试器(Lauterbach/iSYSTEM) 提示:这三层工具需要版本匹配,否则生成的代码可能编译不过

3.2 Vector DaVinci Developer 安装与配置

DaVinci Developer 是干什么的?说白了,它就是用来画 SWC(软件组件)的。你可以在里面定义端口、接口、运行实体,然后它帮你生成 RTE 代码。

3.2.1 安装要点

  • 版本选择:我建议用 4.x 以上版本,对 Multi-Core 支持更好。记得和你的 AutoSAR 版本对齐,比如 4.4.0 就用对应的 Developer 4.4.x。
  • License 管理:Vector 用浮动 License。你需要在环境变量里配好 VECTOR_LICENSE_FILE,指向你的 License Server。
  • Java 依赖:这玩意儿依赖 JRE。我曾经遇到过装完打不开,查了半天发现是 Java 版本太高,降回 Java 8 就好了。

3.2.2 基本配置

安装完后,第一件事是配置 Workspace。我个人习惯把 Workspace 放在工程目录外面,避免和代码混在一起。

# 环境变量示例(Windows)
VECTOR_LICENSE_FILE=@192.168.1.100
DAVINCI_HOME=C:\Vector\DaVinci_Developer_4.4.0
PATH=%PATH%;%DAVINCI_HOME%\bin
小技巧:第一次打开 Developer 时,它会让你选一个 "System Template"。选 "Classic Platform" 模板,别选 Adaptive 的,不然后面配置会乱。

3.3 EB tresos Studio 安装与配置

EB tresos Studio 是配置 BSW 和 MCAL 的主力工具。它和 DaVinci Developer 是互补关系——Developer 管应用层,tresos 管基础软件层。

3.3.1 安装流程

  1. 下载安装包:EB 的安装包通常很大(几个 G),包含所有 MCAL 模块。
  2. 安装顺序:先装 Studio 本体,再装 MCAL 插件包。我见过有人先装插件,结果 Studio 识别不到。
  3. License 配置:EB 用 License 文件(.lic)。放到 C:\EB\licenses 目录下就行。

3.3.2 工程创建

打开 tresos Studio,新建工程时要注意选对 MCU 型号。比如你用的是 Infineon TC3xx,就选对应的 MCAL 变体。

注意:tresos 的工程文件后缀是 .epf。别和 Developer 的 .arxml 搞混了。这两个工具通过 ARXML 文件交换数据。

3.4 编译器与调试器配置

编译器这块,AutoSAR 圈子里常用的有三家:Tasking、Green Hills、GCC。我个人的经验是:

编译器 适用场景 特点
Tasking Infineon TC2xx/TC3xx 代码密度好,调试信息丰富
Green Hills NXP/Renesas 优化强,但 License 贵
GCC 原型验证、教学 免费,但优化不如商业编译器

3.4.1 编译器路径配置

在 tresos Studio 里,你需要指定编译器路径。通常在 Project → Properties → C/C++ Build → Settings 里配。

# 以 Tasking 为例
C:/TASKING/v6.3r1/ctc/bin
# 环境变量
TOOLCHAIN_PATH=C:/TASKING/v6.3r1

3.4.2 调试器配置

调试器我推荐 Lauterbach。它的 TRACE32 在 AutoSAR 圈子里是标配。配置时注意:

  • 调试脚本:Lauterbach 用 .cmm 脚本初始化 CPU。我一般会写一个通用的初始化脚本,省得每个工程都配一遍。
  • 连接方式:JTAG 还是 SWD?TC3xx 建议用 JTAG,调试信息更全。

避坑指南:我曾经在调试时发现程序跑飞,查了两天,最后发现是调试器时钟配置太高,导致信号不稳定。把 JTAG 时钟降到 10MHz 就正常了。

3.5 工程文件结构解析

一个典型的 AutoSAR CP 工程,文件结构大概是这样的:

Project_Root/
├── 01_System/              # 系统级配置
│   ├── System.arxml        # 系统描述
│   └── EcuExtract.arxml    # ECU 提取
├── 02_SWC/                 # 应用层
│   ├── App_SWC.arxml       # SWC 定义
│   └── Rte/                # 生成的 RTE 代码
├── 03_BSW/                 # 基础软件
│   ├── BswM/               # BSW 管理器
│   ├── Can/                # CAN 驱动
│   ├── Lin/                # LIN 驱动
│   └── EcuM/               # ECU 管理器
├── 04_MCAL/                # 微控制器抽象层
│   ├── /                #  定时器
│   ├── Adc/                # ADC 驱动
│   └── Port/               # Port 驱动
├── 05_Config/              # 配置文件
│   ├── LinkerScript.ld     # 链接脚本
│   └── Startup.s           # 启动代码
├── 06_Build/               # 编译输出
│   ├── Makefile            # 构建脚本
│   └── Output/             # 生成的 .elf/.hex
└── 07_Docs/                # 文档
    └── Architecture.md

3.5.1 关键文件说明

  • ARXML 文件:这是 AutoSAR 的"灵魂"。所有配置信息都存成 XML 格式。Developer 和 tresos 之间就是靠它通信的。
  • Rte 文件夹:里面是生成的 RTE 代码。你写的 SWC 代码会通过 RTE 和 BSW 交互。别手动改这里的文件,改了也会被重新生成覆盖。
  • LinkerScript.ld:链接脚本。这个文件决定了代码段、数据段、堆栈放在哪。我建议在工程初期就配好,不然后面改起来很麻烦。
个人经验:我习惯在工程根目录放一个 README.md,记录工具版本、编译器路径、License 信息。半年后你再看这个工程,会感谢当时的自己。

3.6 环境验证

装完所有工具后,怎么知道环境是不是好的?我一般跑一个"最小验证":

  1. 打开 DaVinci Developer,新建一个最简单的 SWC(一个输入端口,一个输出端口)。
  2. 生成 RTE 代码。
  3. 在 tresos Studio 里导入生成的 ARXML,配置一个定时器(比如 10ms 中断)。
  4. 生成 BSW 代码。
  5. 用编译器编译整个工程,生成 .elf 文件。
  6. 用 Lauterbach 下载到开发板,看 LED 是否按 10ms 闪烁。

如果这六步都能走通,恭喜你,环境搭好了。如果卡在哪一步,嗯,回头检查一下版本匹配和 License。

常见问题:编译时报 "undefined reference to ..." 多半是 RTE 和 BSW 的版本没对齐。Developer 生成的 RTE 接口和 tresos 生成的 BSW 接口对不上,就会这样。解决办法是确保两个工具用的是同一个 AutoSAR 版本。