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

相关推荐
星恒讯工业路由器3 小时前
5G FWA技术演进与趋势
网络·5g·信息与通信·4g·5g fwa·3gpp规范·fwa趋势
星夜夏空996 小时前
网络编程(1)
服务器·网络
上海云盾-小余6 小时前
中小站点防护避坑:低价高防服务存在的各类安全短板剖析
网络·爬虫·安全·ddos
数据知道9 小时前
邮件安全实战:SPF/DKIM/DMARC 配置与钓鱼绕过
网络·安全·web安全·网络安全·邮件安全
王莎莎-MinerU9 小时前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
Chloeis Syntax9 小时前
JAVAEE初阶 --- 构造HTTP请求
网络·网络协议·http·postman
砚凝霜10 小时前
软考网络工程师|第 1 章 计算机网络基础 完整备考笔记
网络·笔记·计算机网络
rcms1527026921810 小时前
NIKON 4S019-394 接口模块
网络
某不知名網友10 小时前
Linux Socket 编程完整讲解
网络
ICT系统集成阿祥10 小时前
不用复杂命令,快速定位二层 / 三层网络故障
网络·网络排查·二层故障·三层故障