做网站的实验总结,百度点击优化,wordpress crossapple,广东官网网站建设哪家好someip是现代车辆通信的主流通信协议知一#xff1b;
someip的主要涉及模型以及协议结构#xff0c;我就不做多的做介绍了#xff0c;如有需要请读者自行进行百度学些#xff1b;
虽然someip协议已经基本成熟#xff0c;但有多个实现版本#xff0c;现在使用较多的主要…someip是现代车辆通信的主流通信协议知一
someip的主要涉及模型以及协议结构我就不做多的做介绍了如有需要请读者自行进行百度学些
虽然someip协议已经基本成熟但有多个实现版本现在使用较多的主要有vector autosar配置的someip版本以及网络开源的vsomeip版本
这两个版本在理论上是可以相互兼容正常通信的但在实际使用过程中仍然发现了一些问题
我将自己实际遇到的问题以及解决方案记录到这里希望可以帮助有需要的人
1、在同一个局域网内两方无法相互发现
原理运行的someip应用需要借助于各自的someipd服务来彼此发现对方
而someipd实现的someip sd协议是借助于udp的广播来发布或收集网络中的其他someip应用的相关信息的
所以要想两方能够彼此发现首先要将someip sd的服务设置为同一广播地址以及服务端口号
这个信息可以在vsomeip程序加载的vsomeip-tcp-server.jason等配置文件中进行修改
理想情况下将两方的配置修改成一样就可以正常发现彼此
2、将someip sd的广播地址以及服务端口号配置成一样双方仍然是无法发现彼此
这个首先要借助网络工具来抓包进行确认是否可以在网络上抓取到相应的udp数据包来检查是不是由于网络设置的原因造成的
如果抓包工具可以确认在网络上有影响的udp广播包
那么就要对someip的版本号配置进行确认
在我使用vsomeip 2.10版本时发现vsomeip 代码中的默认主版本号信息为0x00;而vector autasar的someip版本号信息不特意更改的话是0x01;
由于双方版本号不一致虽然彼此可以收到对方发出的sd udp广播包但在软件中彼此仍然无法相互识别。并且在vsomeip中会频繁输出warning信息
将双方的版本号信息设置为一致时就相互就可以识别了
3、sd 广播地址服务端口号以及版本号都配置成一致但彼此仍然无法发现
这个就需要排查网络设置问题
(1)双方是否可以彼此ping通
(2)路由表以及gateway是否配置正确
我就遇到双方可以ping通但由于路由表以及gateway信息缺失使得双方无法彼此发现的问题
4、双方可以彼此发现但客户端一订阅或者发送request底层tcp链接就断开的情况
这个问题也是由于服务版本号的问题interface version;
由于某些特殊的原因将autosar someip的主版本号设置为255可以与vsomeip 的0版本号相互发现
但是当进行交互时在代码中会对interface version配置进行验证。如果双方的interface version不一致那么就会出现一通信底层tcp的链接就会断开情况
这个需要注意检查
5、当vsomeip作为服务器,autosar someip作为客户端。vsomeip发送的event,autosar someip的客户端无法接收到的情况
首先要对someip传输类型进行确认使用的是tcp或者udp;
假如使用tcp进行传输则需要将vsomeip 配置文件中event配置添加is_reliable为true的字段
否则autasar someip tcp的客户端无法正常接收