环境
- Ubuntu20.04
- Wireshark 3.6.5
- AUTOSAR Adaptive Platform Demonstrator(APD) R21-11
- vsomeip
背景
做研究生毕设需要对AUTOSAR Adaptive Platform进行研究学习,通过成为AUTOSAR的Attendee会员,获取了其参考实现AUTOSAR Adaptive Platform Demonstrator(APD)的访问权限,并在Ubuntu20.04平台上进行了构建运行。研究课题主要关注AP的Communication Management模块。CM提供了ara:com API供上层应用实现SOA服务通信需求,ara::com继承了SOME/IP的基本通信模式,起初也仅支持SOME/IP网络绑定作为底层通信中间件。单纯学习网络协议规范过于枯燥,学习效率不高,结合抓包实践可以加深理解,提高学习效率,故尝试运行APD提供的sample application:radar- fusion,并对客户端与服务器两节点之间的通信过程进行抓包,结合SOME/IP协议规范进行对比分析,熟悉协议通信流程。
环境配置流程
1. 安装Ubuntu 20.04环境
对于APD R21-11版本,官方使用Ubuntu 20.04发行版作为基础环境,推荐安装desktop版本,因为开发过程中APD的应用节点通常以qemu模拟器的形式运行,带有图形界面的方便一些。另外,wireshark的运行也需要图形界面。 还有因为APD采用的构建方式很占空间,建议安装Ubuntu的时候分配100G以上的空间(推荐150G)
2. 安装wireshark
wireshark在3.2以后的版本原生支持对SOME/IP协议报文的解析,而直接通过APT安装的版本可能较老,所以这里建议通过添加ppa源的方式,安装最新版的wireshark。具体参考Ubuntu 上 Wireshark 的安装与使用
3. 构建APD
由于APD采用了Yocto来实现嵌入式Linux系统的裁剪定制,故流程较为繁琐,有一定的学习成本。
镜像构建
该步骤直接按照官方wiki文档操作即可:https://wiki.autosar.org/doku.php?id=apd_user_guide:build:general 为了尽量符合远程调用的场景,需要构建core-image-apd-devel-radar和core-image-apd-devel-fusion两个镜像(minimal版本也可),分别运行在两个节点上,前者运行radar- fusion应用的radar service,后者运行fusion部分,作为客户端,获取radar service的数据,并进行fusion。
镜像运行
在安装官方文档运行之前,需要先进行额外操作,即进行网络配置,因为默认的自动网络配置有一些问题。配置方式如下:
sudo apt-get install uml-utilities
sudo ip link add br0 type bridge
sudo tunctl -u $(whoami)
sudo ip link set tap0 master br0
sudo tunctl -u $(whoami)
sudo ip link set tap1 master br0
sudo ip addr add 192.168.7.10/24 dev br0
sudo ip link set dev tap0 up
sudo ip link set dev tap1 up
sudo ip link set dev br0 up
分别运行radar和fusion端后可以看到如下输出:
radar端
重点看[FIELD…],[Callback…]日志输出,表明serice的相应服务被调用成功了,若没有出现这类日志,说明调用失败,网络配置有问题
fusion端
可以看到有Event和Method调用成功
4. 用Wireshark抓包
打开Wireshark,双击br0(或者tap0、tap1),对两节点之间收发的报文进行抓包。首先可以看到UDP协议的报文在两个节点之间收发,但是Wireshark貌似没有识别出SOME/IP协议,这可以通过右键任意一个UDP的报文,点击Decode as,然后在Current栏选择SOME/IP即可识别,后续的所有SOME/IP报文均会被解析为SOME/IP类型。
|