🟢 入门理解
TCU的软件就像一个多层蛋糕。 最底层是硬件(芯片和电路板),中间层是操作系统(负责管理CPU、内存等资源),再往上是中间件(负责把各层连接起来),最顶层是应用程序(真正干活的:远程控制、OTA升级、诊断等)。
操作系统管理硬件资源,中间件提供通信桥梁,应用程序实现具体业务功能------三层各司其职,共同构成TCU的软件世界。
4A 软件栈全景
4A.1 分层架构概览
TCU软件栈从底到顶可分为五层:
| 层次 | 典型技术 | 职责 |
|---|---|---|
| BSP / HAL | 芯片厂商SDK、MCAL | 屏蔽硬件差异,提供统一硬件访问接口 |
| 操作系统 | FreeRTOS、Linux、QNX | 任务调度、内存管理、进程/线程隔离 |
| AUTOSAR CP / AP | Classic BSW、Adaptive Platform | 标准化基础软件框架,提供COM/Diag/NvM等服务 |
| 中间件 | SOME/IP、DDS、MQTT Client | 面向服务通信、云端连接、消息路由 |
| 应用层 | SWC(CommM、OTAM等) | 实现具体业务逻辑 |
4A.2 完整软件栈架构图

4A.3 多核与多OS部署策略
现代TCU SoC通常采用异构多核架构:
-
安全核(Lock-step MCU ):运行FreeRTOS + AUTOSAR CP,处理CAN通信、UDS诊断等安全关键任务
-
性能核(Application Core):运行Linux/QNX + AUTOSAR AP,处理OTA、V2X、AI推理等复杂应用
-
通信核(Modem Core):运行专用RTOS,管理4G/5G蜂窝链路
4B AUTOSAR Classic Platform
4B.1 BSW模块全景
AUTOSAR Classic Platform的BSW(Basic Software)是标准化的基础软件框架,按层次组织:
服务层(Services Layer):
| 模块 | 全称 | 功能 |
|---|---|---|
| COM | Communication | 信号级通信抽象,I-PDU打包/解包 |
| PduR | PDU Router | PDU路由,连接COM与底层通信栈 |
| DCM | Diagnostic Communication Manager | UDS诊断服务处理(0x10/0x22/0x27/0x2E/0x31/0x34-0x37等) |
| DEM | Diagnostic Event Manager | DTC存储、冻结帧管理、事件去抖 |
| NvM | Non-volatile Memory Manager | 非易失存储管理,支持ROM/EEPROM/Flash抽象 |
| EcuM | ECU State Manager | ECU启动/关机/睡眠状态管理 |
| BswM | BSW Mode Manager | 模式仲裁,根据条件切换系统模式 |
| ComM | Communication Manager | 通信通道状态管理(Full/No/Silent Com) |
| FiM | Function Inhibition Manager | 基于DTC的功能抑制 |
ECU抽象层 & MCAL:
| 模块 | 接口 | 功能 |
|---|---|---|
| CanIf | CAN Interface | CAN驱动抽象 |
| EthIf | Ethernet Interface | 以太网驱动抽象 |
| CanSM | CAN State Manager | CAN通道状态机(Bus-Off恢复等) |
| TcpIp | TCP/IP Stack | TCP/UDP/IP协议栈 |
| SoAd | Socket Adaptor | Socket抽象层,连接PDU Router与TCP/IP |
| DoIP | Diagnostics over IP | ISO 13400协议实现 |
| CanMCAL | CAN Driver | CAN控制器寄存器级驱动 |
| EthMCAL | Ethernet Driver | 以太网MAC/PHY驱动 |
| SpiMCAL | SPI Handler | SPI通信驱动 |
| UartMCAL | UART Driver | 串口驱动 |
4B.2 RTE与SWC
RTE(Runtime Environment) 是AUTOSAR的核心,它为SWC提供虚拟总线接口,使SWC与底层BSW解耦:
SWC接口类型:
| 接口类型 | 通信模式 | 典型场景 |
|---|---|---|
| Sender-Receiver (S/R) | 数据驱动,单向/周期 | 车速信号、温度数据 |
| Client-Server (C/S) | 请求-响应,同步/异步 | 诊断请求、NvM读写 |
| Mode-Switch | 模式通知 | 系统模式切换 |
| Trigger | 事件触发 | 周期任务启动 |
4B.3 TCU典型SWC分解
一个典型TCU的SWC(Software Component)分解如下:
| SWC | 职责 | 关键接口 |
|---|---|---|
| CommM(通信管理) | 管理与TSP云端的通信链路,维护心跳,处理上下行消息路由 | S/R:网络状态;C/S:发送/接收请求 |
| DiagM(诊断管理) | 管理UDS诊断会话,处理远程诊断请求,管理DTC上报 | C/S:UDS服务调用;S/R:DTC事件 |
| OTAM(OTA管理) | 接收云端升级指令,管理差分包下载、校验、刷写流程 | C/S:升级控制;S/R:进度/状态上报 |
| RemoteCtrlM(远程控制) | 解析远程指令(锁车/解锁/启动空调等),映射为CAN信号 | C/S:指令执行;S/R:执行结果 |
| GNSSM(定位管理) | 读取GNSS模块数据,解析NMEA,计算位置/速度/时间 | S/R:经纬度、速度、UTC时间 |
| PowerM(电源管理) | 管理TCU休眠/唤醒策略,KL15/KL30状态监控 | S/R:电源状态;Mode-Switch:模式切换 |
| LogM(日志管理) | 管理运行日志的采集、存储、上传 | C/S:日志写入/查询;S/R:日志状态 |
4C AUTOSAR Adaptive Platform
4C.1 平台架构
AUTOSAR Adaptive Platform(AP)面向高性能SoC,基于POSIX操作系统(Linux或QNX),支持C++14/17开发:
4C.2 关键功能集群详解
ara::com --- 面向服务通信框架
ara::com是AP的核心通信中间件,实现SOME/IP协议栈:
-
Service Discovery:自动发现网络上可用的服务实例
-
Proxy/Skeleton模式:客户端通过Proxy发起请求,服务端通过Skeleton接收请求
-
通信模式:Method(同步/异步请求-响应)、Event(发布-订阅)、Field(可读写属性)

ara::ucm --- 更新与配置管理
ara::ucm负责软件包的生命周期管理:
| 功能 | 说明 |
|---|---|
| Software Package Transfer | 从外部源接收软件包 |
| Software Package Installation | 安装/卸载软件组件 |
| Activation/Deactivation | 激活或停用已安装的软件 |
| Rollback | 安装失败时回退到上一版本 |
ara::exec --- 执行管理
管理应用的完整生命周期:
Off → Starting → Running → Terminating → Off
↕
Updating (via ara::ucm)
4C.3 AP vs CP 对比
| 维度 | Classic Platform | Adaptive Platform |
|---|---|---|
| 操作系统 | AUTOSAR OS / FreeRTOS | Linux / QNX(POSIX) |
| 编程语言 | C | C++14/17 |
| 通信模型 | 信号(Signal) | 服务(Service) |
| 动态性 | 静态配置 | 动态部署、运行时更新 |
| 适用场景 | 安全关键、低延迟 | 复杂计算、高带宽 |
| 典型用例 | CAN/UDS/NM | OTA/V2X/AI/HMI |
4D Hybrid AUTOSAR(CP+AP共存)
4D.1 为什么需要混合架构
单一平台无法满足TCU的全部需求:
-
CP的优势:确定性调度、低延迟(<1ms)、ASIL-B/D安全认证成熟
-
AP的优势:动态部署、高算力利用、丰富的生态(Linux库、AI框架)
-
TCU的现实需求:CAN诊断(CP) + OTA升级(AP) + 远程控制(CP映射CAN) + V2X(AP)
4D.2 双系统架构方案

4D.3 IPC跨域通信
CP与AP之间需要可靠的进程间通信(IPC)机制:
| IPC方案 | 特点 | 适用场景 |
|---|---|---|
| 共享内存 + 信号量 | 最低延迟,需手动同步 | 高频数据交换(传感器数据) |
| 虚拟串口(VirtIO) | 标准化,Hypervisor支持好 | 中等频率命令/响应 |
| RPC over VirtIO Ethernet | 类网络通信,可复用TCP/IP栈 | ara::com跨域调用 |
| OpenAMP(RPMsg) | 轻量级AMP框架,适合MCU-SoC | MCU核与AP核通信 |
典型数据流示例:远程锁车命令
Cloud → MQTT → [AP域] ara::com → IPC(VirtIO) → [CP域] RemoteCtrlM → COM → CAN → BCM ECU → 锁车
4E SOA与面向服务通信
4E.1 SOME/IP协议
SOME/IP(Scalable service-Oriented MiddlewarE over IP) 是车载以太网的主流SOA协议:
| 特性 | 说明 |
|---|---|
| Service Discovery (SD) | 服务提供方广播Offer Service,消费方Find Service |
| Method Call | 支持Request/Response和Fire&Forget |
| Event | 发布-订阅模型,支持Notification |
| Field | Getter/Setter/Notifier组合 |
SOME/IP报文结构:
┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐
│ Message ID │ Length │ Request ID │ Protocol │ Interface │ Message │
│ (16b) │ (32b) │ (16b) │ Ver(8b) │ Ver(8b) │ Type(8b) │
├──────────┴──────────┴──────────┴──────────┴──────────┼──────────┤
│ Return Code (8b) │ Payload │
└───────────────────────────────────────────────────────┴──────────┘
SOME/IP-SD 服务发现流程:

4E.2 DDS(Data Distribution Service)
DDS是另一种面向实时系统的发布-订阅通信中间件:
| 特性 | DDS | SOME/IP |
|---|---|---|
| 发现机制 | 自动发现(SPDP/SEDP) | SD协议 |
| 通信模型 | 以数据为中心的发布-订阅 | 以服务为中心 |
| QoS策略 | 丰富的QoS(可靠性、持久化、Deadline等) | 基本QoS |
| 实时性 | 强实时保障 | 中等 |
| 典型应用 | V2X、传感器融合 | 域控通信 |
4E.3 SOA vs 传统CAN信号通信
| 维度 | CAN信号通信 | SOA(SOME/IP/DDS) |
|---|---|---|
| 寻址方式 | 信号ID(静态DBC/LDF配置) | Service ID + Method/Event ID |
| 通信模式 | 周期广播 | 按需请求/事件驱动 |
| 带宽 | CAN: 500kbps / CAN-FD: 8Mbps | 100Mbps~1Gbps以太网 |
| 扩展性 | 新增信号需改DBC + 重刷所有ECU | 动态服务发现,热插拔 |
| 适合场景 | 实时控制、传感器数据 | 信息娱乐、OTA、V2X |
4F 云端连接(V2C)
4F.1 通信协议对比
| 协议 | 传输层 | 模式 | 带宽 | 适用场景 |
|---|---|---|---|---|
| MQTT | TCP | 发布-订阅 | 低(<1KB报文) | 心跳、事件上报、远程指令下发 |
| HTTPS | TCP (TLS) | 请求-响应 | 中 | 文件下载(OTA包)、批量数据上传 |
| DDS | UDP/TCP | 发布-订阅 | 高 | 实时遥测、V2X |
MQTT QoS等级选择:
| QoS | 可靠性 | 延迟 | TCU典型用途 |
|---|---|---|---|
| 0 | 最多一次 | 最低 | 遥测数据上报 |
| 1 | 至少一次 | 中 | 远程控制指令 |
| 2 | 恰好一次 | 最高 | OTA升级确认 |
4F.2 消息序列化格式
| 格式 | 可读性 | 体积 | 编解码速度 | 典型用途 |
|---|---|---|---|---|
| JSON | 高 | 大 | 中 | API交互、配置下发 |
| Protobuf | 低(二进制) | 小 | 快 | 高频遥测、大批量数据 |
| CBOR | 低(二进制) | 小 | 快 | 嵌入式受限场景 |
4F.3 设备影子与数字孪生
设备影子(Device Shadow) 是云端维护的设备状态副本:
{
"state": {
"reported": {
"firmware_version": "3.2.1",
"battery_voltage": 12.4,
"gnss_latitude": 39.9042,
"gnss_longitude": 116.4074,
"door_lock_status": "locked",
"last_ota_time": "2026-06-15T08:30:00Z"
},
"desired": {
"target_firmware_version": "3.3.0",
"climate_on": true
}
}
}
-
reported:TCU上报的实际状态
-
desired:云端期望的目标状态,TCU读取后执行
-
delta:reported与desired的差异,驱动OTA/控制动作
4F.4 主流IoT平台集成
| 平台 | 协议 | 特点 |
|---|---|---|
| 阿里云IoT | MQTT (TLS) | 设备影子、OTA服务、规则引擎、国内合规 |
| AWS IoT Core | MQTT (TLS) | Device Shadow、Greengrass边缘计算 |
| 华为IoTDA | MQTT/CoAP | 设备接入、全球SIM联接、OTA |
4G 远程服务实现(RVC)
4G.1 远程控制命令列表
| 命令 | CAN目标ECU | CAN信号示例 | 前置条件 |
|---|---|---|---|
| 远程锁车 | BCM(车身控制模块) | DoorLockCmd = LOCK | 车速 = 0, 挡位 = P |
| 远程解锁 | BCM | DoorLockCmd = UNLOCK | 车辆处于驻车状态 |
| 远程启动空调 | HVAC / EMS | ClimateStartReq = ON | 电池电压 > 11.5V |
| 远程鸣笛 | BCM | HornReq = ON(限时5s) | 车速 = 0 |
| 远程闪灯 | BCM | HazardLightReq = ON(限时10s) | 无 |
4G.2 命令执行全链路

4G.3 安全机制
| 安全层 | 机制 | 说明 |
|---|---|---|
| 传输层 | TLS 1.3 | MQTT/HTTPS加密传输 |
| 应用层认证 | Token + 签名 | 每条命令携带HMAC-SHA256签名 |
| 防重放 | Timestamp + Nonce | 命令带时间戳(±30s窗口)+ 一次性随机数 |
| TCU内部 | Secure Element | 密钥存储在HSM/SE中,不暴露于软件层 |
| ECU层 | SecOC | CAN报文级认证(可选) |
4H 诊断子系统
4H.1 UDS over IP(DoIP, ISO 13400)
DoIP将以诊断协议(UDS)封装在以太网/IP之上,实现高带宽诊断:

DoIP会话建立流程:
1. Vehicle Identification Request (UDP广播)
2. Vehicle Identification Response (TCU应答VIN/EID)
3. TCP连接建立
4. Routing Activation Request (认证)
5. Routing Activation Response (确认)
6. Diagnostic Message (UDS over TCP)
4H.2 DTC管理
| 功能 | 说明 |
|---|---|
| DTC存储 | DEM模块将故障码存入NvM,断电不丢失 |
| 冻结帧 | DTC触发时记录当时的环境数据(车速、温度等) |
| 去抖机制 | 防止偶发故障触发DTC(去抖计数器+时间窗口) |
| DTC上报 | 通过MQTT/DoIP上报云端或诊断仪 |
| OTA诊断 | 升级前后自动扫描DTC,确保升级未引入新故障 |
4H.3 诊断服务典型用例
| UDS服务 | SID | TCU典型用途 |
|---|---|---|
| DiagnosticSessionControl | 0x10 | 切换诊断会话(默认/编程/扩展) |
| ReadDataByIdentifier | 0x22 | 读取软件版本、硬件序列号 |
| SecurityAccess | 0x27 | 获取刷写/标定权限(Seed-Key) |
| WriteDataByIdentifier | 0x2E | 写入配置参数 |
| RoutineControl | 0x31 | 执行校验/擦除/完整性检查 |
| RequestDownload | 0x34 | OTA刷写:请求下载 |
| TransferData | 0x36 | OTA刷写:传输数据块 |
| RequestTransferExit | 0x37 | OTA刷写:传输完成 |
| ClearDTC | 0x14 | 清除故障码 |
| ReadDTCInformation | 0x19 | 读取故障码列表及快照数据 |
4I 启动链(Boot Chain)
4I.1 三阶段启动架构

4I.2 Secure Boot验证流程
每个阶段启动时执行以下验证:
1. 读取待执行镜像的数字签名(RSA-2048 / ECDSA-P256)
2. 从HSM/Secure Element获取对应公钥
3. 计算镜像SHA-256哈希值
4. 用公钥验证签名与哈希匹配
5. 验证通过 → 跳转执行
6. 验证失败 → 进入恢复模式 / 回退到上一版本
| 启动阶段 | 存储位置 | 可更新性 | 签名验证 | 失败策略 |
|---|---|---|---|---|
| Primary BL | ROM | 不可更新 | N/A(ROM可信) | --- |
| Secondary BL | Flash Bank A/B | OTA可更新 | PBL验证 | 回退到备用Bank |
| Application | Flash Bank A/B | OTA可更新 | SBL验证 | 回退到上一版本 |
4I.3 A/B分区与回退机制

回退策略:
-
启动计数器:Application启动后N秒内需上报Watchdog,否则SBL判定启动失败
-
连续失败阈值:连续3次启动失败则回退到上一版本
-
云端通知:回退事件通过MQTT上报云端
本章小结
| 主题 | 核心要点 |
|---|---|
| 软件栈全景 | BSP → OS → AUTOSAR → Middleware → App 五层架构 |
| AUTOSAR CP | BSW模块(COM/DCM/DEM/NvM等)+ RTE + SWC,面向CAN/UDS安全关键域 |
| AUTOSAR AP | POSIX OS + ara::com/diag/ucm,面向高性能计算域 |
| 混合架构 | CP处理安全关键,AP处理复杂应用,通过Hypervisor+IPC共存 |
| SOA通信 | SOME/IP服务发现+方法/事件,DDS实时发布-订阅 |
| 云端连接 | MQTT为主协议,设备影子管理状态,支持阿里/AWS/华为IoT平台 |
| 远程服务 | 全链路安全:TLS+Token+防重放+HSM,命令经CP域映射CAN信号执行 |
| 诊断子系统 | DoIP(UDS over IP) + DTC管理 + OTA诊断 |
| 启动链 | 三级安全启动 + A/B分区回退保障升级安全 |
下一章预告: 第五章将深入讲解通信协议栈,包括CAN/CAN-FD/LIN/以太网的协议细节与测试方法。