2. AUTOSAR方法论与MICROSAR工程结构
AUTOSAR 的方法论核心可以用一句话概括:用模型描述系统,用工具生成配置,用代码实现行为。在这条链路中,ARXML 是贯穿始终的"通用语言",而 MICROSAR 则是把这套语言落地到 ECU 可执行代码的工程化工具链。理解 ARXML 的层次结构、ECU Extract 的抽取逻辑,以及 MICROSAR 配置工程的组织方式,是后续所有集成工作的前提。
ARXML:AUTOSAR 的标准化描述载体
ARXML(AUTOSAR XML)是基于 XML 的标准化描述文件格式,用于承载 AUTOSAR 模型中所有可交换的信息。它并不是"一个文件",而是一组按元模型(Meta-Model)组织的信息容器。每个 ARXML 文件内部由若干顶层元素构成,常见的包括:
AR-PACKAGES:包结构,类似命名空间,用于组织所有元素;SW-COMPONENT-TYPES:软件组件类型定义,描述应用层或服务层的组件接口与内部行为;SYSTEM:系统描述,包含拓扑、通信矩阵、ECU 实例与信号映射;ECU-RESOURCE:ECU 资源描述,如内存、外设、处理器等;BSW-MODULE-DESCRIPTION:基础软件模块的配置描述。
这些元素通过引用(REF)相互关联,形成一个有向图。例如,一个 SWC 的 P-PORT 会引用某个 SENDER-RECEIVER-INTERFACE,而该接口又可能被系统描述中的信号映射引用。理解这种"定义—引用"关系,是读懂 ARXML 的关键。
ECU Extract:从系统描述到 ECU 专属视图
在整车开发中,系统描述(System Description)通常由 OEM 或系统架构师维护,覆盖多个 ECU、多条总线、多个软件组件。但单个 ECU 的集成工程师并不需要全部信息,他只需要与本 ECU 相关的子集。ECU Extract 就是从这个全局系统中"抽取"出目标 ECU 所需信息的产物。
抽取过程通常由工具(如 DaVinci Configurator、EB tresos 或 MICROSAR 的 extractor)完成,输入是完整的系统描述 ARXML,输出是 ECU Extract ARXML。抽取的依据是 ECU 实例名或 ECU 标识符。抽取后,文件中只保留:
- 该 ECU 上部署的 SWC 实例及其连接;
- 该 ECU 参与的通信矩阵(信号、PDU、帧、通道);
- 该 ECU 的硬件资源描述;
- 必要的系统服务配置(如 ComM、EcuM 的引用)。
ECU Extract 是 MICROSAR 配置工程的直接输入之一。它决定了后续 BSW 配置中通信栈、诊断栈、模式管理栈的初始参数范围。
软件组件模板:应用层与基础软件的契约
软件组件模板(SWC Template)是应用层开发者交付给集成工程师的"接口契约"。它通常以 ARXML 形式提供,包含:
- SWC 类型名称与类型(Application、SensorActuator、Service 等);
- 端口(Port)列表,每个端口的方向(Provide/Require)与接口类型;
- Runnable Entity 及其触发事件(TimingEvent、DataReceivedEvent 等);
- 内部行为描述(可选,若使用 ARXML 描述行为)。
集成工程师拿到 SWC 模板后,需要将其与 ECU Extract 中的系统信息"对接":把 SWC 的端口映射到具体的信号或服务,把 Runnable 映射到 OS Task,把触发事件映射到 BSW 调度。这个对接过程在 MICROSAR 工程中通过配置工具完成,最终生成 RTE 配置。
MICROSAR 配置工程的组织方式
MICROSAR 配置工程通常以"工程文件 + 多个配置容器"的形式组织。一个典型的工程目录结构如下:
MyEcu_Project/
├── MyEcu.dpa # DaVinci Configurator 工程文件
├── input/
│ ├── System.arxml # 系统描述(全局)
│ ├── MyEcu_Extract.arxml# ECU Extract
│ └── SwcTemplates/ # 各 SWC 模板 ARXML
├── config/
│ ├── EcucValues.arxml # ECU 配置参数值
│ ├── ComConfig.arxml # 通信栈配置
│ ├── OsConfig.arxml # OS 配置
│ └── RteConfig.arxml # RTE 配置
├── generated/ # 工具生成的代码与配置
│ ├── include/
│ └── src/
└── output/
└── MyEcu.hex # 最终可执行文件
其中 input/ 目录存放所有输入 ARXML,config/ 目录存放工具生成的中间配置,generated/ 目录存放最终生成的 C 代码与头文件。MICROSAR 工具链(如 DaVinci Configurator Pro)会读取这些输入,按照 ECU 配置规范(ECUC)生成 BSW 配置代码,再与 SWC 代码、RTE 代码一起编译链接。
从 ARXML 到可执行代码:数据流与工具链
下面这张图展示了从系统描述到 ECU 可执行文件的主要数据流与工具链关系。图中区分了输入文件、工具处理、配置容器和最终产物四个层次,并标出了 ECU Extract 在其中的"过滤"作用。
图中左侧的"系统描述"与"SWC 模板"是原始输入,经过 ECU Extract 的过滤与合并后,进入 MICROSAR 配置工程。配置工程内部由多个 ECUC 容器组成,分别管理通信栈、OS、RTE 和参数值。代码生成器读取这些容器,生成 BSW 配置代码与 RTE 代码,最终与 SWC 代码、MCAL 一起编译链接为 ECU 可执行文件。
工程组织中的关键实践
在实际项目中,MICROSAR 工程的组织方式直接影响集成效率。以下几点值得注意:
- 输入文件版本管理:系统描述和 SWC 模板通常由不同团队提供,版本更新频繁。建议在工程中保留
input/目录的版本记录,每次更新后重新执行 ECU Extract,并对比差异。 - 配置容器的职责分离:ComConfig、OsConfig、RteConfig 等容器应保持独立,避免交叉修改。例如,通信矩阵的变更只应影响 ComConfig,不应直接修改 OsConfig 中的任务周期。
- 生成代码的只读原则:
generated/目录下的代码由工具生成,不应手动修改。若需调整行为,应修改配置容器或 SWC 代码,然后重新生成。 - ECU Extract 的增量合并:当系统描述更新时,重新抽取的 ECU Extract 可能与现有配置冲突。工具通常提供"合并"功能,但集成工程师需要逐项确认信号映射、PDU 布局和任务分配是否仍然正确。
总结来说,AUTOSAR 方法论通过 ARXML 将系统描述、软件组件和 ECU 配置解耦,而 MICROSAR 工程则通过 ECU Extract 和配置容器将这些描述组织为可执行的集成流程。掌握这条数据流,就能在后续的 BSW 配置、RTE 生成和代码集成中快速定位问题、理解变更影响。