实习总结
工作任务
任务一:基于SOME-IP协议,在双机上实现雷达数据服务的发布/订阅与测试;
任务二:开发自动化配置脚本,实现在Veristand中自动化配置AFP(自动帧处理)通道接口,服务于仿真测试。
工作过程
任务一
1、跑通SOME-IP双机通信:学习以太网和SOME-IP相关知识,学习和了解SOME-IP源码中的发布/订阅和请求/响应两个模式的路由原理,了解配置文档中各个参数的意义,实现SOME-IP双机通信。
2、优化服务端程序:基于发布/订阅服务端源码,将真实服务端相关信息写入配置文档和代码中,改进已序列化的VTD雷达数据报文,以SOME-IP协议提供雷达点云数据服务和状态数据服务;
3、开发消费端程序:基于发布/订阅消费端源码,将真实消费端相关信息写入配置文档和代码中,开发基于真实控制器信息的SOME-IP消费端通信仿真程序,实现雷达数据服务的发布/订阅;
4、测试雷达数据准确性:使用Wireshark对服务端提供的雷达数据抓包,将数据包导入RSView中实现对雷达数据的可视化测试;
任务二
1、开发数据筛选脚本:基于已解析的DBC文件中的所有数据,从中筛选用于设置AFP通道的相关数据,包括Message,Chks,Cntr,生成txt文档。
2、开发自动化配置脚本:基于上述生成的txt文档中的数据和用户的交互式输入修改XML文件,为指定Controller的指定CAN路下所需发送的Message添加其Chks和Cntr的同名User Channel并将其配置于此Message的AFP中,实现Veristand中AFP通道接口的自动化配置。
工作成果
成果一
实现基于SOME-IP协议的真实控制器消费端的通信仿真,实现其和雷达数据服务端的信息交互,为雷达数据服务的测试提供了仿真渠道。
成果二
实现使用自动化配置脚本在Veristand中配置用户测试所需的AFP通道接口,极大地提高了仿真测试效率。
工作回顾
1、SOME-IP出现的debug消息。虽然debug消息一般不会对通信以及功能实现产生影响,但是目前还未了解其出现的真正原因。现阶段读SOME-IP源码比较吃力,没有读透,例如路由注册的内部细节等等。
2、最初写AFP通道接口自动化配置脚本时虽然了解到存在XML解析库,但没有使用XML解析库,把问题想简单了,采用字符串处理函数来暴力实现相应的功能。但是随着需求增多后,代码难以修改,可拓展性差。之后去了解了tinyxml2库,并使用该库重写了代码,使用XML解析库使代码更规范化,可读性和可拓展性都大大提高。
个人收获
1、学习和了解了以太网各层的原理,了解了应用层网络协议SOME-IP,学会了使用SOME-IP来仿真通信服务端和消费端,学会了使用wireshark进行报文收发测试。
2、学会了使用C++中的tinyxml2库,python中的elementtree库来进行xml解析和修改。提高了和字符串处理相关的代码能力。