调试能收到CAN报文,不调试不能收到

问题现象

调试能收到A报文,不调试不能收到。单板上就能够出现,这就比较好复现了。

问题分析

那就重点关注不调试时候的情况了,以下操作都是在不调试的情况下操作的。

在COM层接收回调函数打标志位发送到CAN上,默认值为0,收到变成1,超时丢失变成2,发现没有收到,直接从0变成2。

在canif层判断接收到的报文,如果是A报文,就把标志位置起来,发现并没有置起。

那问题肯定在MCAL层了。

就查询MCAL层的配置,初始化正常,能进入中断回调,中断回调当中有接收到A报文,就是报文分发的时候出问题。

问题结论

检查配置发现配置了两个一模一样的接收硬件对象,只是object ID不同。按照原理来说,报文进来之后会优先分配给object ID小的那一个硬件对象,结果canif层关联的是object ID大的那一个,在单板上面自然运行不起来。

调试的时候收发器一直在收报文,当object ID小的那一个硬件对象的缓存区满了,就会存入object ID大的那一个硬件对象,所以在调试的时候上层能收到对应的报文。

相关推荐
network_tester6 分钟前
自动驾驶系统TSN时延测试:从理论到实践的关键解析
网络·人工智能·网络协议·tcp/ip·自动驾驶·信息与通信·p2p
遇印记11 分钟前
软考知识点(windows系统管理与命令)
运维·服务器·网络·windows·ddos
雪度娃娃15 分钟前
Asio异步读写——简单服务器和客户端异步通信
运维·服务器·网络·c++·php
不昀17 分钟前
音频变压器Bourns SM-LP-5001国产替代选型指南
网络·音视频·以太网·网络通信·电子元器件
随身数智备忘录18 分钟前
从点检到全生命周期:设备管理体系能解决哪些场景痛点?一套设备管理体系的实战应用
java·网络·数据库
切糕师学AI27 分钟前
Envoy 详解:云原生时代的高性能网络代理
网络·云原生·istio·网络代理·envoy·sidecar·网格服务
H Journey31 分钟前
VMware + Linux(Ubuntu) + 桥接网络知识梳理
linux·网络·ubuntu
TechWayfarer32 分钟前
街道级IP定位的技术边界:IP精准定位服务在本地生活场景的落地实践
大数据·网络·python·tcp/ip·生活
XiYang-DING34 分钟前
【Java EE】TCP—连接管理
网络·tcp/ip·java-ee
周末也要写八哥44 分钟前
TCP三次握手与四次挥手的过程
java·网络·tcp/ip