3. AUTOSAR架构总览
AUTOSAR 并不是单一软件栈,而是一套由方法论、模板规范和两套运行时平台共同构成的标准化体系。量产项目中最常见的困惑是:同一个 ECU 项目里既有 Classic Platform(CP)的 CAN 通信栈,又听说要引入 Adaptive Platform(AP)做 SOA 服务,两者到底如何分工?理解这一点的关键,是先看清两套平台各自的分层结构与安全模块落点。
一、两套平台的分层架构与定位
Classic Platform 面向深嵌入式、硬实时、资源受限的 MCU,典型场景是车身、动力、底盘域控制器。它的分层自下而上为:微控制器抽象层(MCAL)、ECU 抽象层(ECU Abstraction)、服务层(Services)、RTE,最上层是应用层的 SWC。BSW 由 MCAL、ECU 抽象、服务层和复杂驱动(CDD)共同组成,通过标准化接口向 RTE 暴露能力。
Adaptive Platform 面向高性能 SoC,运行 POSIX 兼容操作系统(如 Linux、QNX),以 C++ 应用和 SOA 服务为核心。它的分层为:硬件与操作系统层、功能集群(Functional Cluster)、ARA(AUTOSAR Runtime for Adaptive Applications)API,最上层是 Adaptive Application(AA)。功能集群包括执行管理(EM)、状态管理(SM)、通信管理(CM)、诊断、持久化、平台健康管理(PHM)、加密与更新配置管理等。
二、RTE 与 SWC:CP 的“胶水层”与“积木”
SWC 是应用功能的封装单元,只通过端口(Port)和端口接口(Port Interface)描述交互,不关心对方在哪个 ECU、走哪条总线。RTE 则负责把虚拟功能总线(VFB)上的连接“落地”:把 Sender-Receiver 或 Client-Server 通信映射为实际的任务调用、队列读写或 COM 信号收发。因此 RTE 是生成代码,不是手写代码,其行为由 ARXML 配置决定。
量产中一个典型误区是把 RTE 当成普通中间件去“优化”。实际上 RTE 的调度绑定、可运行实体(Runnable)到任务的映射、以及数据一致性机制,直接决定实时性与功能安全表现。例如同一 SWC 内的 Runnable 若被分配到不同任务,共享数据必须通过 RTE 的 Exclusive Area 或队列保护,否则会出现数据撕裂。
三、安全相关模块的落点
功能安全与信息安全在 AUTOSAR 中并非独立层,而是横切到各层。下表给出量产项目最常打交道的模块及其职责。
| 模块 | 所属平台 | 核心职责 | 量产关注点 |
|---|---|---|---|
| WdgM | CP | 监督实体存活、截止期与逻辑执行顺序 | 监督周期与喂狗窗口标定 |
| E2E | CP / AP | 端到端保护:CRC、计数器、Data ID | Profile 选择与信号组划分 |
| CSM / CryIf | CP | 加解密、哈希、密钥管理的统一接口 | HSM 固件与密钥槽规划 |
| SecOC | CP / AP | 报文认证与防重放 | Freshness 同步与总线负载 |
| FiM | CP | 功能抑制管理,联动 Dem 事件 | 降级策略与整车一致性 |
| PHM / Idsm | AP | 平台健康监督与入侵检测上报 | 监督周期、告警上报通道 |
四、案例:域控制器中的 CP 与 AP 协同
某智能座舱域控制器采用“AP 主控 + CP 实时协处理”的架构。AP 侧运行 Linux,承载语音、导航等 SOA 服务,通过 ara::com 发布服务;CP 侧 MCU 负责车身 CAN 报文收发与安全监控。两者之间通过以太网 SOME/IP 网关桥接。安全链路如下:
CP: SWC(Sensor) -> RTE -> COM -> PduR -> CanIf -> CAN Driver
CP: SecOC 在 PduR 层对报文做 MAC 计算与校验
CP: E2E 在 COM 层对信号组加 CRC 与计数器
网关: CAN -> SOME/IP 转换,携带 Freshness Value
AP: ara::com 接收服务 -> 应用校验 -> Idsm 上报异常
AP: PHM 监督进程存活,超时触发 SM 状态切换
五、常见误区与复盘
- 误区一:把 AP 当成“更快的 CP”。AP 不保证硬实时,其调度基于 POSIX 优先级与资源预算,安全机制依赖进程隔离与 PHM,而非 WdgM 式监督。
- 误区二:认为 RTE 可以手工改写。RTE 由配置生成,手工修改会在下次生成时被覆盖,正确做法是调整 ARXML 中的 Runnable 映射与 Exclusive Area。
- 误区三:安全模块只在应用层做。SecOC 在 PduR、E2E 在 COM、CSM 在服务层,落点分散,需在架构设计阶段就规划好各层职责边界。
- 复盘要点:先画清“信号从传感器到服务”的完整路径,再在路径上标注每个安全模块的拦截点,能有效避免安全功能漏配或重复保护。