用飞凌提供的内核以及例程测试。
接收应用程序:飞凌提供的基于socketCAN的读写代码。
发送端:周立功usbcan
问题的现象:和之前一个朋友在飞凌的bbs提出的现象一样。开始的时候,可以接收到数据,过了一会儿,就挂掉了,收不到数据。量mcp芯片的中断请求引脚为低电平。
只有通过ifconfig can0 down之后,再ifconfig can0 up才可以继续收到数据。但过一会还会挂掉。
抛砖引玉:兄弟我先跟踪can的驱动,mcp251x.c,在中断服务程序里添加打印信息,每触发一次中断就将接收到的数据rxbuf打印出来。发现,每次中断服务打印的数据是正常的。引起问题的原因是由于mcp拉低了中断信号,但linux没有响应中断。
再读驱动代码,发现申请中断的方式是下降沿触发,所以在想,是不是由于产生中断的那一时刻跟什么其他的中断冲突了,所以linux没有检测到下降沿。想改为电平方式触发。但总是出问题。
ps: 在28和36内核测试中,现象一致。
再ps:
测试了一天,mcp251x的驱动确实会丢失中断,但还没找着丢失的原因.......
LINUX, 测试, 朋友, 应用程序 |