车载以太网之要火系列 - 番外篇4:从DoIP到SOME/IP,一个初学者的“越级碰瓷”

写在开篇

今晚有点晚,来不及学多少了,但还得来凑点字数。

DoIP+UDS的35篇笔记,终于边学边写,搞完了。

从第21篇到第35篇,说实话,学得并不轻松。

有些地方到现在还是迷迷糊糊的------比如27服务那几级权限,我写的时候觉得自己懂了,过两天再看又有点懵。还有刷固件那十六步,顺序到现在都没完全背下来。

但不管怎么说,一路火花带闪电,好歹是走完了。

然后我就开始琢磨------

DoIP是给车看病的,那车正常跑的时候呢?车里那么多ECU、域控制器,它们之间是怎么聊天的?

摄像头怎么告诉域控制器"我看到人了"?座舱怎么告诉音响"放首歌"?BMS怎么告诉整车"我电量不多了"?

这些,DoIP不管。

那谁管?

江湖上有个大名鼎鼎的协议,叫SOME/IP

我没学过,但听说过。

就像小时候听大人们聊"降龙十八掌",知道很厉害,但具体怎么打,不知道。

这不,刚学完DoIP,心里痒痒的,就想碰碰这个SOME/IP。

有点像练武的人刚学会了一套拳,就想去挑战隔壁门派的大弟子。越级碰瓷,自不量力,但忍不住。

一、先搞清楚SOME/IP是干啥的

我翻了翻资料,大概弄明白了一件事:

DoIP是"诊"------车坏了才用。
SOME/IP是"聊"------车正常开着的时候,各个模块之间互相通信。

举个不太恰当的例子:

  • DoIP = 你去医院看病。医生问你"哪儿不舒服",你说"头疼",医生给你开药。一问一答,有来有回。

  • SOME/IP = 你身体里各个器官自己聊天。心脏跟肺说"我要血",肺说"我给你氧气"。不用你去指挥,它们自己协调。

黄蓉(如果我笔下真有黄蓉的话)肯定会说:"哦~~DoIP是看病,SOME/IP是养生!"

差不多就是这个意思。

二、传统方式 vs SOME/IP

车载通信的老祖宗是CAN总线

CAN总线的特点是:广播

不管哪个节点发消息,全车都能收到。不管你需不需要,都得听。

就像你在小区楼下喊了一嗓子"今天吃饺子",全楼的人都听见了。想听的听见了,不想听的也听见了。浪费带宽,还吵。

SOME/IP不一样。 它是面向服务的------谁需要谁调用,不需要的不打扰。

比如座舱域控制器想放个音乐,它只需要跟音响说一声就行。BMS、VCU、ADAS这些模块,根本不需要知道有人在放歌。

这就叫服务调用

更厉害的是,SOME/IP还支持服务发现

音响启动后,会在网络上喊一嗓子:"我支持放音乐服务!"座舱域控制器听到了,记在小本本上:"哦,音响会放音乐,以后找它。"

不用提前配IP、配端口,动态发现,即插即用

这点比DoIP灵活多了------DoIP都要提前约好逻辑地址,SOME/IP是自动找。

三、SOME/IP的四种"说话方式"

我翻了翻资料,SOME/IP主要有四种通信模式:

模式 怎么玩 举个栗子
Request-Response 你问一句,它答一句 座舱问"当前车速多少",VCU答"80km/h"
Fire&Forget 你喊一声,不管它回不回 座舱喊"开窗",BCM收到就开,不回话
Event 出事了自己往外喊 BMS检测到电压异常,主动报"我要炸了"
Field 订阅某个状态,变了就通知 座舱订阅"车门状态",门一开就收到通知

这不就跟UDS有点像?UDS是请求/响应,SOME/IP是请求/响应+事件+订阅。

但UDS是给人看病,SOME/IP是给机器聊天。目标不一样,手段也不一样。

四、SOME/IP和DoIP到底啥关系

我试着总结了一下:

对比维度 DoIP SOME/IP
全称 Diagnostic over IP Scalable Service-Oriented MiddlewarE over IP
我的理解 给车看病 车里模块自己聊天
啥时候用 车坏了、刷固件 车正常跑的时候
谁说话 诊断仪 ↔ ECU ECU之间、域控制器之间
通信模式 请求/响应 请求/响应 + 事件 + 订阅/发布
端口 13400 30490(常见配置)
底层 都是UDP/TCP,都是车载以太网 都是UDP/TCP,都是车载以太网

所以它们不是谁替代谁,而是分工不同

  • DoIP负责"保健":车出问题了,去修。刷固件、读故障码、清DTC。

  • SOME/IP负责"干活":车正常开,所有模块互相配合。摄像头传数据、座舱调音量、BMS汇报电量。

一个管"生病",一个管"生活"。

五、我为什么想碰SOME/IP

学完DoIP,总感觉车载以太网这块还有一大片空白。

DoIP只是冰山一角,而且是"应急用"的那一角。

真正的车载以太网,每天都在跑着大量的SOME/IP消息------座舱和音响聊天,ADAS和摄像头聊天,BMS和VCU聊天......

这些消息长什么样?怎么抓包?怎么解析?

我不知道。

但我想知道。

就像练武的人,学会了一套拳法,总想知道下一套是什么。

虽然现在的我刚摸到门,离精通还差十万八千里。虽然学DoIP的时候,很多地方还在迷迷糊糊。

不去碰,永远不知道。

六、写在最后

这篇番外,不算技术笔记。

更像是一个初学者的一点碎碎念------

DoIP刚学完,还没捂热,就想去碰SOME/IP。

明知越级,但还是忍不住。

不指望一篇番外就能搞懂SOME/IP,只是想给自己挖个坑,先记下来"有这么一个东西",以后慢慢填。

毕竟,降龙十八掌也不是一天练成的。

DoIP写完了,SOME/IP......再说吧。

打完收工,886。

相关推荐
是小章啊1 小时前
Jmeter压测实战之HTTP_POST
网络协议·jmeter·http
半壶清水1 小时前
windows环境下,bmv2虚拟交换机的部署与使用方法
网络·windows·python·网络协议
zjun10012 小时前
TCP专栏-3.三次握手
网络·网络协议·tcp/ip
liulilittle2 小时前
SA6400内核5.10编译TCP_BBR的具体方法整理
chrome·网络协议·tcp/ip
西西弟2 小时前
网络编程基础之TCP多线程并发服务器
服务器·网络·网络协议·tcp/ip
计算机安禾4 小时前
【计算机网络】第24篇:TCP性能瓶颈的定量诊断——重传类型、RTT波动与带宽时延积
网络协议·tcp/ip·计算机网络
bzmK1DTbd15 小时前
Servlet 4.0新特性:HTTP/2与异步处理支持
网络协议·http·servlet
近墨者缺黑16 小时前
关于Modbus RTU和TCP协议的一些简要笔记
网络协议