outfind 发表于 2011-11-30 14:33:11

linux下can驱动的问题

用飞凌提供的内核以及例程测试。
接收应用程序:飞凌提供的基于socketCAN的读写代码。
发送端:周立功usbcan

问题的现象:和之前一个朋友在飞凌的bbs提出的现象一样。开始的时候,可以接收到数据,过了一会儿,就挂掉了,收不到数据。量mcp芯片的中断请求引脚为低电平。
只有通过ifconfig can0 down之后,再ifconfig can0 up才可以继续收到数据。但过一会还会挂掉。

抛砖引玉:兄弟我先跟踪can的驱动,mcp251x.c,在中断服务程序里添加打印信息,每触发一次中断就将接收到的数据rxbuf打印出来。发现,每次中断服务打印的数据是正常的。引起问题的原因是由于mcp拉低了中断信号,但linux没有响应中断。

再读驱动代码,发现申请中断的方式是下降沿触发,所以在想,是不是由于产生中断的那一时刻跟什么其他的中断冲突了,所以linux没有检测到下降沿。想改为电平方式触发。但总是出问题。

ps: 在28和36内核测试中,现象一致。

再ps:
测试了一天,mcp251x的驱动确实会丢失中断,但还没找着丢失的原因.......

outfind 发表于 2011-12-2 16:30:44

做了一个计数器,确实会丢失中断,而且只要清了中断标志之后,马上就可以恢复通信了。这也就是为什么ifconfig can0 down再up之后可以恢复通信的原因。不知道飞凌的工程师们有没有找着办法

outfind 发表于 2011-12-7 13:47:30

基本搞定了,算了,还得靠自己!!!!!

chenjx 发表于 2012-1-6 00:38:18

kaishui07 发表于 2012-2-9 11:42:52

wangchenxicool 发表于 2012-2-15 21:21:45

landry 发表于 2012-6-4 21:09:59

clh1934 发表于 2012-6-25 14:13:02

clh1934 发表于 2012-7-2 08:34:03

liuxinstar 发表于 2012-8-28 19:24:33

飞凌-路飞 发表于 2013-6-4 21:16:22

http://bbs.witech.com.cn/forum.php?mod=viewthread&tid=41276&extra=page%3D1楼上的朋友们尽情分享吧

qin 发表于 2014-1-12 23:09:51

qin 发表于 2014-1-12 23:15:57

页: [1]
查看完整版本: linux下can驱动的问题