调试能收到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大的那一个硬件对象,所以在调试的时候上层能收到对应的报文。

相关推荐
tod11317 分钟前
IP分片和组装的具体过程
运维·服务器·网络
小李独爱秋20 分钟前
计算机网络经典问题透视:无线局域网的物理层主要有哪几种?
服务器·网络·物联网·计算机网络·信息与通信
Honmaple35 分钟前
OpenClaw 钉钉插件安装指南
服务器·网络·钉钉
爱吃汽的小橘1 小时前
揭秘802.15.4:物联网通信基石
网络·学习
云小逸2 小时前
【网络通信】TCP核心原理深度解析:三次握手/四次挥手为基,拥塞控制与慢启动核心精讲
网络·网络协议·tcp/ip
阿猿收手吧!2 小时前
【C++】实现自旋锁:三种高效实现与实战指南
服务器·网络·c++
小白电脑技术2 小时前
Lucky中CorazaWAF的OWASP核心规则集功能
服务器·网络·安全
双层吉士憨包2 小时前
2026数据爬虫实战:如何高效采集Google地图数据的动态IP策略
大数据·网络·人工智能
新缸中之脑2 小时前
Nanobot:轻量级OpenClaw
java·运维·网络
火山引擎开发者社区2 小时前
火山引擎正式上线 102.4T 自研交换机,构建 AI 网络新底座
网络·人工智能·火山引擎