车联网TBOX开发实战七,通讯协议介绍
接上一篇的CAN,本篇介绍一下TBOX协议,不是单个协议,是整个TBOX内外的全部通讯协议,感觉有必要先全面介绍一下整个通讯系统,有了全貌才更好理解或者说更好的去探索自己感兴趣的部分,除了协议之前,还会附带介绍协议之上承载的业务
先看图,整个通讯连接图,一个大且全的图
基本上这应该是最复杂的TBOX了,一共包括4个功能模块,MCU连整车,SOC(4G/5G Modem)连接TSP,数字钥匙和卫星通信。此处不代表所有TBOX都这样,只是说明TBOX可以做成这样,我画的是一个示意图,为了说明协议尽量复杂点。其实数字钥匙或SBOX,其任意一个都可以设计为一个单独的盒子,挂在整车CAN网络上
先看数字钥匙
数字钥匙本身可能就具备多个通讯节点,因为需要确认定位准确,总不能你离车还有5米远车就解锁了,走了10多米车还没锁,但这是数字钥匙内部的设计,我们在此只看数字钥匙对外的功能
1. 与手机连接,肯定通过BLE了,点对点和广播消息,协议主要有国际标准CCC,国内ICCE以及厂家自己的私有协议,以及还有NFC标准
2. 与车连接,通过MCU走CAN实现车辆控制,与MCU之间一般是私有协议,uart或者SPI
接着SBOX
1. SBOX一般支持短信和通话,这里没有画通话链路,通话一般走I2S或者PCM传输音频流,控制链路一般是UART或者SPI,需要遵循SBOX的协议,也是私有的
2. SBOX不能控车,一般作为数据上传的备份链路使用,比如4G断了,撞车后MSD走SBOX发出去,或者你开到了无人区,通过SBOX发送个人消息或定位等
再看MCU
1. 接整车,一般CAN,CAN-FD,LIN等传统方式,底层标准CAN帧,上层协议私有,当然也有标准,比如诊断UDS协议
2. 与SOC通讯,UART或SPI,协议一般都是私有,或者高级一点,在SOC和MCU处理性能都足够的情况下,SPI可以虚拟以太网用,走网络协议,或者RPC方式,更加灵活的部署业务
SOC里面就复杂了
先看云端的,首先是连接运营商基站,这属于电信标准,3GPP协议,SOC里有个4G/5G处理器,一般称为基带,还有一个应用处理器,比如高通9x07的就是Cortex-A7,他们之间走高通自家的QMI协议,实现基带的全部控制和数据流交互
在APN拨号成功之后,会产生一个或多个虚拟网卡,这时候就到了常规网络领域范围
如何生成虚拟网卡?
这是标准的Linux网络驱动,虚拟网卡就是基带的Internet通讯链路,相当于你的电脑网卡
如何获取IP?
有了网卡后,还需要IP才能进行数据包收发,所以需要DHCP协议,SOC作为DHCP client,向运营商的DHCP Server获取IP,当然还有DNS
怎么连接TSP?
有了IP后,就可以连接TSP了,以MQTT为例,SOC集成MQTT client就OK,但是数据协议及数据格式一般都是私有,比如Json,XML及自定义的协议或者Protobuf,ASN等很多,其实在连接之前,一般都需要先确保时间正确,通过网络同步时间的协议为NTP协议
再看与车交互
CAN挂在MCU下,SOC连接车一般走以太网,既然是以太网,同样需要有IP,只不过这个IP一般是静态分配的,同时为了安全和隔离,还会划分VLAN,然后配合静态ARP,所以基础连接上都是静态的;
应用上,大多都会采用SOA设计理念,底层支撑为Some/IP协议,服务和数据格式是自定义的;
除了Someip,以太网也可以走诊断协议,采用Doip协议栈;
如果再联合其他域控制器,比如现在基本标配的智能驾驶,在时间同步要求高的业务上,会采用gPTP协议,但前提需要网卡支持TSN
还有前篇ECALL中提到的音频流,RTP协议,这是几个应用比较多的。
这篇就不总结了,都是零散的技术点总结,有些在业务实现过程中需要重点关注,比如uart或spi私有协议,应用需要针对协议文档拆解和封装数据包,有些感知很弱,比如MQTT连接,还有一些存在感几乎没有,比如APN拨号获取IP及DNS,一般调用API后自动什么都有了,一般应用开发者都感知不到。
