3. Continental AUTOSAR工具链与工程结构
在 Continental 的整车集成项目中,AUTOSAR 工程并不是由单一工具完成的,而是由 Vector DaVinci、EB tresos 以及 Continental 内部工具链协同支撑。理解这三类工具的分工与衔接方式,是读懂工程目录、管好 arxml、组织变体与配置集的前提。
三类工具的分工定位
Vector DaVinci 系列(DaVinci Developer、DaVinci Configurator、DaVinci CFG)主要负责应用层软件组件设计、SWC 到 ECU 的映射、RTE 生成以及部分 BSW 配置。它的强项在于图形化建模与 RTE 相关配置,适合应用层与集成层交互密集的场景。
EB tresos Studio 则更偏向底层驱动与 BSW 模块的精细配置,例如 MCAL、EcuM、ComM、NvM、Dcm、Dem 等模块。它生成的配置以 arxml 或模块私有格式输出,强调对寄存器级、通道级参数的直接控制。
Continental 内部工具链通常包括配置管理脚本、arxml 合并与校验工具、变体生成器、构建包装器以及刷写与诊断集成脚本。它们不替代前两者,而是把 DaVinci 与 tresos 的输出统一到同一工程基线中,完成跨工具的一致性检查、变体裁剪和最终交付物打包。
工程目录的组织原则
一个可维护的 Continental AUTOSAR 工程,目录结构通常围绕“来源隔离、基线唯一、变体可追溯”三条原则展开。典型根目录下会划分 config/、arxml/、src/、build/、tools/ 和 delivery/ 等一级目录。
config/ 下按工具来源再分:DaVinci/ 存放 SWC 描述、RTE 配置和 ECU Extract;tresos/ 存放 MCAL 与 BSW 模块的配置工程;variant/ 存放变体选择规则和裁剪脚本。这样做的目的是让每个工具的原始输出保持独立,避免不同工具直接改写对方的文件。
arxml/ 是工程的核心资产目录,通常再分 input/、merged/ 和 generated/ 三层。input/ 按工具和模块存放原始 arxml;merged/ 存放经过合并与校验后的基线 arxml;generated/ 存放最终用于生成代码和构建的 ECU 配置。关键纪律是:任何人不得直接修改 merged 和 generated 中的文件,所有变更必须回到 input 层,通过工具重新生成。
arxml 的合并与校验
DaVinci 和 tresos 各自输出的 arxml 在命名空间、版本、引用路径上可能存在差异。Continental 内部工具链通常会在合并前执行三步检查:第一,校验 arxml 的 AUTOSAR 版本是否与项目基线一致(例如统一为 4.2.2 或 4.4.0);第二,检查跨文件引用是否完整,例如 SWC 引用的端口是否在 ECU Extract 中存在;第三,检查同名元素是否冲突,例如两个工具都定义了同一个 Com 信号。
合并后的基线 arxml 会生成一份校验报告,记录合并前后的元素数量、冲突项和处理方式。如果冲突无法自动解决,工具会标记为待人工确认,集成工程师需要根据信号矩阵或诊断数据库决定保留哪一份定义。
变体与配置集的组织方式
整车项目通常存在多个变体,例如不同配置等级、不同市场法规版本、不同硬件引脚定义。变体管理不是简单复制工程,而是通过“配置集 + 条件裁剪”实现。
配置集通常以 XML 或 YAML 清单形式存在,记录每个变体启用了哪些 BSW 模块、哪些 SWC 实例、哪些诊断服务、哪些通信矩阵。例如一个变体清单可能包含:variant_id: "EU_High"、enabled_modules: [Can, Lin, Dcm, Dem, NvM]、disabled_swc: [TrailerControl]、diagnostic_profile: "EU_OBD"。
变体生成器读取配置集后,对 merged arxml 执行裁剪:删除未启用模块的配置节点、替换变体相关的参数值、调整 ECU 提取范围。裁剪结果输出到 generated/ 下按变体命名的子目录,例如 generated/EU_High/、generated/US_Base/。这样同一份基线可以派生出多个可构建的配置,而无需维护多份完整工程。
配置集与构建的衔接
配置集不仅用于裁剪,还直接驱动构建。构建包装器会根据配置集选择对应的 generated/<variant>/ 目录,调用 DaVinci 生成 RTE 代码、调用 tresos 生成 MCAL 与 BSW 代码,最后把应用层代码、BSW 代码和链接脚本一起编译。构建输出会附带一份清单,记录本次构建使用的变体 ID、arxml 基线版本、各工具版本号和校验和。
对于集成工程师来说,判断一次交付是否可用的关键依据是:配置集是否与变体需求一致、arxml 基线是否通过校验、构建清单是否完整。只要这三项对齐,后续的刷写与诊断集成才有可靠基础。