完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题描述及复现步骤: can1测试通信时,十几秒后就报“write: No buffer space available”,网上查找该报错,将qlen由10改成1000,但还是报错。源码没改,只把can1使能,帮忙看看可能是什么原因引起的,给下修改建议感谢! 报错截图 can1信息 发送数据脚本 个人修改设备树 |
|
相关推荐
9个回答
|
|
正常现象,底层驱动没有把数据发出去就会阻塞上层队列,而上层队列就如你所说的改成1000,代表上层缓存1000帧。你底层没有发生成功,他不会从上层拿数据,也就是上层队列满,你应用层写不进去。该问题最根本原因是,can驱动发送出去的数据没有收到发送确认信号,就不会打队列发送另一帧。检测接收端是否正常,波特率是否一致,如果有分析仪就接上看看。
|
|
|
|
|
|
|
|
你这个使用的是can1.0, 不支持同时发送和接收数据,同时发送和接收会有大量错误帧。
|
|
|
|
|
|
|
|
我试过,把rk3568-firefly-port.dtsi 里的compatible改成compatible = "rockchip,can-2.0";。ifconfig -a就只有can0,没有can1和can2。还有其他地方需要修改的吗? |
|
|
|
你使用到的can才要更改,软件的can0是看谁先注册进来谁就是can0,后面的就是can1、can2....,而现在更改的是硬件的can1和can2,你只使能了can2,那软件上只会有can0
|
|
|
|
|
|
|
|
你使用的can才需要使能,而且还要看引脚有没有被其他设备复用。
|
|
|
|
可以了,源码升级后canfd驱动文件里才出现can-2.0。现在没有错误帧可以正常通信了,感谢!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
626 浏览 0 评论
887 浏览 1 评论
784 浏览 1 评论
1997 浏览 1 评论
3242 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 21:45 , Processed in 0.817693 second(s), Total 91, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号