介绍(Introduction)
文档目的(Purpose of this document)
分层软件架构(Layered Software Architecture)描述了 AUTOSAR 的软件架构:
- 以自顶向下的方法描述 AUTOSAR 软件的层次结构;
- 将基础软件(BSW)模块映射到软件层;
- 展示它们之间的关系。
本文档不包含需求,仅作说明性参考。本文中给出的示例不意味着在所有方面都是完整的。
本文档侧重于概念性分层软件架构的静态视图,不规定具有详细静态和动态接口描述的结构化软件架构设计——这些信息包含在各基础软件模块自身的规范中。
输入(Inputs)
本文档基于 AUTOSAR 的规范和需求文档。
应用范围与可扩展性(Scope and Extensibility)
AUTOSAR 的应用范围(Application scope of AUTOSAR)
AUTOSAR 专为汽车 ECU 设计。此类 ECU 具有以下特性:
- 与硬件(传感器和执行器)的强交互;
- 连接车载网络(如 CAN、LIN、FlexRay 或以太网);
- 微控制器(通常 16 或 32 位),计算能力和内存资源有限(与企业级解决方案相比);
- 实时系统;
- 从内部或外部闪存执行程序。
注意:在 AUTOSAR 概念中,ECU 意味着一个微控制器加上其外设和相应的软件/配置。机械设计不在 AUTOSAR 范围内。这意味着,如果一个外壳中布置了多个微控制器,则每个微控制器都需要自己的 AUTOSAR-ECU 实例描述。
AUTOSAR 的可扩展性(AUTOSAR extensibility)
AUTOSAR 软件架构是一种通用方法:
- 标准模块可以在功能上扩展,同时仍保持合规;其配置仍必须在自动基础软件配置过程中予以考虑;
- 非标准模块可以作为复杂驱动(CDD)集成到基于 AUTOSAR 的系统中;
- 不能添加额外的层。
1 架构(Architecture)
1.1 软件层概览(Overview of Software Layers)
顶层视图(Top view)
AUTOSAR 架构在最高抽象级别上区分三个软件层:
- 应用层(Application Layer);
- 运行时环境(Runtime Environment,RTE);
- 基础软件(Basic Software,BSW)。
这三层运行在微控制器之上。
图:AUTOSAR 顶层架构
┌─────────────────────────────────┐
│ Application Layer │ ← 应用 SW-C
├─────────────────────────────────┤
│ Runtime Environment (RTE) │ ← SW-C 间通信
├─────────────────────────────────┤
│ Basic Software (BSW) │ ← 标准化服务
└─────────────────────────────────┘
▼
Microcontroller
粗略视图(Coarse view)
AUTOSAR 基础软件进一步分为多个层:
- 服务层(Services Layer);
- ECU 抽象层(ECU Abstraction Layer);
- 微控制器抽象层(Microcontroller Abstraction Layer,MCAL);
- 复杂驱动(Complex Drivers)。
图:AUTOSAR 完整分层架构
┌─────────────────────────────────────────┐
│ Application Layer │
├─────────────────────────────────────────┤
│ Runtime Environment (RTE) │
├─────────────────────────────────────────┤
│ Services Layer │ ← OS、EcuM、Dem、WdgM 等
├─────────────────────────────────────────┤
│ ECU Abstraction Layer │ ← CanIf、LinIf、MemIf 等
├─────────────────────────────────────────┤
│ Microcontroller Abstraction Layer (MCAL)│ ← Can、Lin、Spi、Adc 等
├─────────────────────────────────────────┤
│ Complex Drivers │ ← CDD(直接硬件访问)
└─────────────────────────────────────────┘
▼
Microcontroller
1.2 软件层内容(Content of Software Layers)
应用层(Application Layer)
应用层包含 AUTOSAR 软件组件(SW-C),实现应用逻辑。SW-C 通过端口(Ports)与 RTE 通信。
SW-C 类型:
- 原子 SW-C(Atomic SW-C):不可再分;
- 组合(Composition):由多个原子 SW-C 组成;
- 参数 SW-C(Parameter SW-C):包含标定参数;
- 传感器-执行器 SW-C:与物理传感器/执行器交互。
RTE 层
RTE 是 AUTOSAR 的运行时环境,是 VFB 的具体实现:
- 为 SW-C 间通信提供基础设施;
- 管理 SW-C 与 BSW 之间的接口;
- 实现 ECU 内的 SW-C 实例化。
RTE 由配置工具生成,对 SW-C 透明。
服务层(Services Layer)
服务层为应用层和基础软件的其他层提供后台服务。包括:
- 操作系统(OS):任务调度、事件、资源管理;
- ECU 状态管理器(EcuM):ECU 启动、睡眠、关闭;
- 看门狗管理器(WdgM):监督实体监控;
- 默认错误追踪器(Det):开发错误捕获;
- 诊断事件管理器(DEM):生产错误管理;
- 诊断通信管理器(DCM):UDS 服务;
- 通信服务(COM):信号路由;
- BSW 模式管理器(BswM):模式管理;
- 网络管理接口(Nm):网络状态;
- 通信管理器(ComM):通信模式;
- 密钥管理(KeyM):加密密钥(4.4 引入);
- 等等。
ECU 抽象层(ECU Abstraction Layer)
ECU 抽象层将 MCAL 的接口抽象为ECU 级的接口:
- CAN 接口(CanIf);
- LIN 接口(LinIf);
- FlexRay 接口(FrIf);
- 以太网接口(EthIf);
- 内存接口(MemIf);
- 看门狗接口(WdgIf);
- 等等。
MCAL 层
MCAL 是直接访问微控制器外设的层:
- CAN 驱动(Can)、LIN 驱动(Lin)、FlexRay 驱动(Fr)、以太网驱动(Eth);
- SPI 驱动(Spi)、ADC 驱动(Adc)、PWM 驱动(Pwm);
- MCU 驱动(Mcu)、PORT 驱动(Port)、DIO 驱动(Dio);
- GPT 驱动(Gpt)、ICU 驱动(Icu)、OCU 驱动(Ocu);
- Flash 驱动(Fls)、EEPROM 驱动(Eep);
- 等等。
复杂驱动(Complex Drivers)
复杂驱动(CDD)可以绕过 ECU 抽象层和 MCAL 直接访问硬件:
- 用于处理特殊硬件(如 ASIC);
- 满足严格的时序要求;
- 封装遗留代码。
CDD 是非标准化的 AUTOSAR 模块,由集成商自行实现。
1.3 多核系统中的软件层内容(Content of Software Layers in Multi-Core Systems)
在多核系统中:
- 基础软件可以分布在多个核上;
- 每个 SW-C 实例运行在特定的核上;
- 核间通信通过RTE和IOC(Inter-OS-Application Communication)实现。
AUTOSAR 支持以下多核分布模式:
- 每个 BSW 模块完整地在一个核上运行;
- BSW 模块按服务拆分到不同核(如通信栈在一核,I/O 在另一核);
- 主/卫星模式(Master/Satellite):一个模块的实体分布在多个核上。
1.4 混合关键系统中的软件层内容(Content of Software Layers in Mixed-Critical Systems)
在混合 ASIL/QM 系统中:
- 不同 ASIL 等级的 SW-C 部署到不同分区;
- OS 提供内存保护和时间保护;
- 分区间通过 IOC 或受信任函数通信。
ASIL 等级说明:
- QM(Quality Management):非安全关键;
- ASIL A/B/C/D:从低到高的安全完整性等级。
1.5 模块概览(Overview of Modules)
AUTOSAR 包含约 90+ 个标准化的 BSW 模块。完整模块清单见 AUTOSAR_TR_BSWModuleList.pdf。
主要模块分组:
| 层 | 代表模块 |
|---|---|
| 服务层 | OS、EcuM、WdgM、BswM、Dem、Det、Dcm、Com、ComM、Nm、KeyM(4.4)等 |
| 通信服务 | CanTp、FrTp、FrArTp、LinTp、J1939Tp、CanNm、UdpNm、SoAd、Sd、DoIP、SecOC、E2EXf 等 |
| 通信硬件抽象 | CanIf、LinIf、FrIf、EthIf 等 |
| 通信驱动 | Can、Lin、Fr、Eth、Spi(部分)等 |
| 内存硬件抽象 | MemIf、Fee、Ea 等 |
| 内存驱动 | Fls、Eep、FlsTst、RamTst 等 |
| I/O 硬件抽象 | IoHwAb、Dio、Adc、Pwm、Icu、Ocu 等 |
| 微控制器驱动 | Mcu、Gpt、Port、Spi、Watchdog(驱动)等 |
| 加密 | Csm、CryIf、Crypto、KeyM 等 |
| 车载以太网 | TcpIp、Eth、EthSwt、EthTrcv、SoAd 等 |
| 复杂驱动 | CDD(用户实现) |
1.6 接口(Interfaces)
1.6.1 通用(General)
AUTOSAR 中存在多种接口类型:
- 标准化接口(Standardized Interface):AUTOSAR 标准化的接口;
- AUTOSAR 接口(AUTOSAR Interface):SW-C 间的接口;
- 标准化 AUTOSAR 接口(Standardized AUTOSAR Interface):由 AUTOSAR 规范定义并被 SW-C 使用的接口;
- BSW 模块接口:BSW 模块间的接口。
1.6.2 层间交互(示例)(Interaction of Layers (Examples))
示例 1:SW-C 发送 CAN 帧
应用 SW-C
↓ Rte_Send() / Rte_Write()
RTE
↓ CanIf_Transmit()
CAN 接口(CanIf)
↓ Can_Write()
CAN 驱动(Can)
↓ 硬件寄存器访问
微控制器 CAN 控制器
示例 2:SW-C 读取传感器值
应用 SW-C
↓ Rte_Read()
RTE
↓ Adc_ReadGroup()
ADC 驱动(Adc)
↓ 硬件寄存器访问
微控制器 ADC
2 配置(Configuration)
AUTOSAR 通过配置(Configuration)来描述 ECU 软件的具体实例化:
配置类(Configuration Class):
- Pre-Compile:编译时确定;
- Link-Time:链接时确定;
- Post-Build:构建后可修改(标定)。
配置工具:
- ECU 配置编辑器(ECU Configuration Editor):编辑 ECU 配置;
- BSW 配置器:生成 BSW 模块配置;
- RTE 生成器:生成 RTE 代码;
- 编译器:编译源代码;
- 链接器:链接对象文件。
详细配置规则见各模块的 SWS 规范。
3 集成与运行时方面(Integration and Runtime Aspects)
本节描述 AUTOSAR 软件的集成过程与运行时行为。
集成步骤:
- 系统设计:定义 ECU 拓扑与通信;
- ECU 配置:配置 BSW 模块与 RTE;
- 代码生成:生成 RTE、BSW 配置代码;
- 编译与链接:生成可执行文件;
- 集成验证:测试 ECU 行为。
运行时关键方面:
- 启动(Startup):由 EcuM 协调;
- 正常运行(Normal Operation):SW-C 通过 RTE 通信;
- 睡眠/唤醒(Sleep/Wakeup):由 EcuM 和 NM 管理;
- 关闭(Shutdown):由 EcuM 协调;
- 错误处理(Error Handling):由 Det/Dem 记录;
- 模式切换(Mode Switch):由 BswM 协调。
详细集成与运行时流程见各 SWS 规范及方法论文档(如 AUTOSAR_TR_AIMeasurementCalibrationDiagnostics)。