1、OTA与CAN总线概述:OTA升级概念、CAN总线基础、为什么需要CAN适配
1.1 OTA升级到底是什么?
各位同学好,我是老张。做嵌入式汽车电子这块有些年头了。今天咱们聊聊OTA升级和CAN总线那点事儿。
OTA,全称叫Over-The-Air,说白了就是「空中升级」。你想想看,手机系统更新,点一下「下载并安装」就完事了。汽车也一样,不用跑4S店,不用插线,远程就把固件给刷了。
我最早接触OTA是在2016年,那时候给一家Tier1做T-Box项目。客户要求能远程升级MCU固件,我当时心里还犯嘀咕:这玩意儿靠谱吗?万一升级到一半断网了,车不就成砖了?
嗯,后来证明,只要方案设计得当,OTA完全可行。现在的新车,基本都标配OTA能力了。
核心要点:OTA升级的本质,就是通过无线通信方式,将新的固件或软件包传输到目标设备,并完成本地安装的过程。
1.2 CAN总线基础——老家伙但很能打
说到CAN总线,这可是汽车电子的「老黄牛」了。1986年由Bosch发明,到现在快40年了,依然活跃在每一辆车上。
为什么这么长寿?因为它简单、可靠、实时性好。
CAN总线有几个关键特点,我简单列一下:
- 差分信号传输:CAN_H和CAN_L两根线,抗干扰能力强
- 多主架构:任何节点都可以主动发消息,不需要主从轮询
- 优先级仲裁:ID越小优先级越高,低优先级的自动退让
- 错误检测机制:CRC校验、位填充、格式检查,一应俱全
我记得有一次调试一个ECU,发现CAN总线老是丢帧。查了半天,原来是终端电阻虚焊了。嗯,这种低级错误,犯过一次就再也不会忘了。
CAN总线的数据帧格式,大家应该都熟悉:
帧起始(1bit) + 仲裁场(12或32bit) + 控制场(6bit) + 数据场(0-8byte) + CRC场(16bit) + 应答场(2bit) + 帧结束(7bit)
注意看,数据场最多8个字节。这就是OTA升级要面对的第一个挑战——带宽瓶颈。
1.3 为什么OTA升级需要CAN适配?
好,问题来了。OTA升级和CAN总线,看起来是两码事,为什么非要扯到一起?
我给大家讲个真实案例。
2019年,我参与一个商用车项目。客户要求通过4G网络远程升级车身控制器(BCM)。方案设计时,我们想当然地认为:把固件包通过TCP/IP下载到T-Box,然后T-Box通过CAN总线把数据发给BCM,不就完事了?
结果一测试,傻眼了。
一个固件包2MB,CAN总线一帧只能发8字节。算上协议开销,实际有效数据每帧也就6-7字节。2MB的数据,要拆成30多万帧。CAN总线速率250kbps,算下来光传输就要十几分钟。
这还没完。升级过程中,BCM还要处理其他CAN报文,比如车门状态、灯光控制。如果升级占用了太多总线带宽,其他功能就会受影响。
所以,CAN适配的核心问题有三个:
- 带宽限制:CAN总线速率有限,大数据量传输耗时很长
- 实时性冲突:升级报文不能影响其他关键报文的实时性
- 可靠性保障:CAN总线传输过程中可能丢帧、错帧,需要重传机制
避坑指南:我曾经见过一个项目,OTA升级方案没做CAN适配,直接拿CANopen的SDO通道传固件。结果升级过程中,电机控制器因为收不到实时控制报文,直接报故障停车。嗯,这种教训,一次就够了。
1.4 常见的CAN适配思路
针对上面三个问题,业界有一些成熟的解决方案。我简单介绍一下:
| 问题 | 解决方案 | 说明 |
|---|---|---|
| 带宽限制 | 分段传输 + 压缩 | 固件包先压缩,再拆成多个CAN帧传输 |
| 实时性冲突 | 优先级管理 + 时间片 | 升级报文使用低优先级ID,或预留专用时间片 |
| 可靠性保障 | 确认重传 + 校验 | 每帧或每段都需要ACK确认,失败自动重传 |
你可能会问:为什么不直接用以太网?现在车载以太网不是越来越普及了吗?
嗯,这个问题问得好。车载以太网确实在普及,但CAN总线在低端ECU、传感器、执行器上依然大量存在。而且,很多老车型的升级,只能通过CAN总线进行。所以,CAN适配不是要不要的问题,而是怎么做得更好的问题。
个人经验:我建议在做OTA方案时,先评估目标ECU的CAN接口能力。有些老芯片的CAN控制器只有2个接收缓冲区,处理大量升级报文时很容易溢出。这种硬件限制,必须在方案设计阶段就考虑进去。
1.5 本章小结
好了,咱们把这一章的核心内容捋一捋:
- OTA升级就是远程固件更新,省时省力
- CAN总线虽然老,但可靠性高,仍是汽车电子的主力总线
- OTA升级需要CAN适配,主要是因为带宽、实时性和可靠性三个问题
- 常见的适配思路包括分段传输、优先级管理和确认重传
下一章,我会详细讲讲OTA升级的完整流程,以及每个环节在CAN总线上的具体实现。到时候咱们再深入聊。
我是老张,咱们下节课见。