• 487查看
  • 0回复

[系统功能] 工程问题——雷达报文丢帧

[复制链接]


该用户从未签到

发表于 21-1-2024 11:38:24 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


01

工程背景

标定的同事反馈控制器上接收的雷达数据会出现丢失的情况,从而展开了一系列的查验修改工作。此前郑重声明:本人十分爱国,没有任何黑某品牌雷达的问题存在。有闲聊群名为证:

工程问题——雷达报文丢帧w1.jpg

写一些小玩意记录下工作的思路吧,也慢慢培养一下自己不打游戏的习惯~

02

问题现象

通过公司自研的上位机可以看到,上位机在解析mcu发出的雷达数据时有一部分数据丢失了,显示为0,但是从目标物的总数来看,雷达是发出了目标物的确切总数。

工程问题——雷达报文丢帧w2.jpg

03

问题分析

那作为一名合格的软件工程师,怎么可能是我的软件有问题呢?首先质疑是雷达发错了!

于是找标定工程师录制了一段雷达的报文,结果很遗憾:

工程问题——雷达报文丢帧w3.jpg

咱们使用canoe的图表功能查看,雷达的报文并不存在某些数据发0的情况。那会不会是雷达发丢了报文呢?

结果也很遗憾:把报文从blf转成asc再通过excel筛选出来以后对比发现,雷达的报文并不存在丢帧的情况。

工程问题——雷达报文丢帧w4.jpg

工程问题——雷达报文丢帧w5.jpg

那接下来就只能从mcu自身找问题了,将报文回放给mcu,调试看看数据的情况。但是中间出了点小插曲,由于手残,没有将mcu发送的报文屏蔽再发送,导致回放报文的过程一直有错误帧,误以为台架有问题,所以去实车上验证耽误了不少时间。

既然都决定上车了,就在com的接收端简单写一点测试代码,再用trace32添加条件断点看看情况:

工程问题——雷达报文丢帧w6.jpg

工程问题——雷达报文丢帧w7.jpg

果然是mcu接收就出现了问题,才会导致往上层再组包发送给上位机出现了问题。但是mcu使用的是中断接收啊,中断优先级比task还高怎么会丢呢?于是想到了去看cpu_load

工程问题——雷达报文丢帧w8.jpg

发现了问题的现象,在mcu跑起来一分钟之后,cpuload增长到以上时,就会出现雷达丢帧的情况,且轻松复现。

04

问题解决

这里简单说明下雷达报文的发送方式:比方说0x60A为信息报文,周期为60ms,告诉其他控制器这60ms内检测到了20个目标物,那么接下来将以很短的周期去发送20条0x60B-E去描述这20个目标物的具体信息,数据量确实比较大。那定位到了就是负载高导致的问题,我们怎么去解决呢?感兴趣的小伙伴可以去百度搜下Basic CAN 和 Full CAN的区别。

最终想到了用轮询的方式去处理雷达的报文:配置下bsw Can下的mailbox,CANIF下的Hrh/Pdu,再去MCAL中配置轮询和fifo大小,最终解决了问题。

工程问题——雷达报文丢帧w9.jpg

工程问题——雷达报文丢帧w10.jpg

可以看到mcu接收到的报文帧数已经与CAN上位机发送的帧数一致了。

05

心路历程

作为一名工程师,可能遇到问题的必要素质就是冷静分析了吧。

“遇到问题不要慌,先点根烟~” 烟鬼同事:“陪一根!”

虽然是一篇流水账,写这篇文章也是博君一笑而已。但是还是觉得,尤其是做项目工程,做记录做分析也是很有必要的吧。铁打的项目,流水的工程师,好的开发流程可以给接手的同事一些喘息空间,遇到问题不至于束手无策。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 1-2-2025 12:43 , Processed in 0.307751 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.