完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
通过断电重启的方式会发现偶发性的can无法进行通信,通过加入调试信息后,发现无法启动的时候是因为驱动文件flexcan.c中的flexcan_chip_disable方法中写入mcr寄存器的第31bit后,读取mcr第20bit,如果读到对应的值,认为禁用成功,否则禁用失败,注册can失败。导致应用层无法使用can进行通信。而且can0注册失败后,can1也会因为同样的原因失败。
一般断电重启几十到几百次之间后会出现这种can无法通信的情况。 分析过程: 1.用2台设备搭建了一个can通信的测试环境,A设备和B设备通过can做数据通信,B设备会通过1个gpio控制的电源给A设备供电,A设备开机后会发送can数据给B设备,B设备收到can信号会拉gpio,让A设备重启。反复测试多次就会出现A无法给B发送数据,查看打印信息就会发现A的can驱动代码中读取mcr第20bit失败。 2.在1的环境下在读取mcr第20bit多次失败后,在代码中再次尝试写入一次mcr的第31bit后,继续读取多次还是失败。 3.单独一台A设备,把驱动程序编译成ko后,在进入根文件系统后,用一个shell命令来反复调用insmod和rmmod 先加载ko,然后卸载ko,如果insmod正常,后续循环5000多次都可以正常insmod。 在1的环境下,因为怀疑是can接的收发芯片问题,把A上的can1接的收发芯片吹下来了,用了A设备上的一个单片机的can与B设备通信,A设备上的单片机和imx6ul是通过spi连接,启动驱动是用的insmod,还是模拟1的环境测试,发现重启多次后还是会出现无法加载成功的情况.而且只要出现一次无法insmod成功,在不重启设备的情况下,不管后续insmod,rmmod多少次都无法正常insmod,也是会报错在读取mcr第20bit失败。 |
|
相关推荐
1个回答
|
|
|
针对MCIMX6G2CVM05AB imx6ul启动时CAN偶发通信失败的问题,以下是逐步解决方案: 1. 增加超时和延迟在 修改驱动代码(flexcan.c): 2. 添加内存屏障确保寄存器写入操作完成后再读取状态。 在写入MCR后添加内存屏障: 3. 检查时钟配置确认禁用期间时钟未被关闭。在设备树中检查CAN时钟配置,确保没有启用过早关闭时钟的电源管理策略。 设备树检查: 4. 强制复位模块在初始化前执行硬件复位,确保模块状态正确。 在驱动初始化函数中添加复位: 5. 查阅勘误表及更新驱动检查i.MX6UL的芯片勘误表,确认是否存在FlexCAN问题。例如,NXP可能建议在禁用模块前执行特定操作。 参考勘误表建议:
6. 调试信息增强在失败时记录更多寄存器状态,帮助定位问题。 添加调试输出: 7. 电源和复位信号检查使用示波器测量CAN控制器的电源和复位信号:
8. 热复位 vs 冷复位测试通过软件复位与断电重启对比,确定是否与电源周期相关: 9. 驱动清理流程确保在模块禁用时彻底释放资源,避免残留状态影响后续初始化:
10. 更新驱动版本检查NXP官方Linux内核的最新flexcan驱动版本,合并修复补丁。例如,某些版本可能已修复LPM_ACK检测问题。 总结:通过增加超时、优化时序、确保时钟稳定、强制复位和增强调试,可解决大部分偶发性禁用失败问题。若问题仍存,需结合硬件信号分析和芯片勘误表进一步排查。建议优先实施步骤1、2、4,并在失败时捕获寄存器状态以缩小问题范围。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
2135个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
37376 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
6775 浏览 1 评论
7793 浏览 1 评论
7642 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
5071 浏览 0 评论
1556浏览 2评论
关于NINA-W132 Wi-Fi模块SPI通信遇到的疑问求解
1208浏览 2评论
如何在MPC PowerPC MCU上首次刷写后禁用BDM?
749浏览 1评论
将HFREFR和LFREFR寄存器值设置为错误的值来将故障注入CMU,但CMU_ISR值始终为零,为什么?
735浏览 1评论
将SPSDK for FRDM-MCX-W71 SDK与VS一起安装时出现hidapi构建错误怎么解决?
678浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:40 , Processed in 0.619819 second(s), Total 45, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
820