zoukankan      html  css  js  c++  java
  • NUC970 Linux CAN 驱动问题及解决办法之二

    开发平台介绍:

      NUC970 + 内置CAN控制器(双通道CAN1CAN2) + 官方Linux_Kernel(少量修改)

    名词:

      终端,使用NUC970的硬件

    异常表现:

      1、当CAN收发器(VP251)断电时,此时再恢复CAN外部通讯,终端表现为能收到全部的CAN数据,发送函数返回成功,但CAN总线上没有任何发送的数据显示。

      2、同样条件使用旧的CAN内核驱动时,竟然可以恢复通讯。

    分析问题:

      1、查询CAN资料显示,当CAN收发器(VP251)断电时,CAN总线会进入BUSOFF的状态,在此状态下,接收成功发送失败是正常的表现。

      2、旧驱动之所以能恢复通讯,是因为旧驱动有BUG,BUSOFF后,收发都异常,应用程序重启了CAN总线,所以才能恢复正常。

    解决办法:

      1、对于断电这种情况,应用程序可以监测到,可以增加补丁程序,当断电恢复时,强制重启CAN总线;

      2、尝试使用CAN总线状态指示,经过测试发现驱动中的状态指示不正常,无法正确显示BUSOFFWARNING等状态,因此暂时无法判断。

      3、CAN总线寄存器中有一个自动重启的设置项,目前设置是禁止,如果设置为使能,CAN驱动会在BUSOFF后自动恢复正常。

      以上3个办法,目前使用1对应,2、3都需要修改和评审驱动程序后再做打算。

      

  • 相关阅读:
    bzoj1477: 青蛙的约会
    数论/the second wave
    bzoj2818: Gcd
    bzoj2705: [SDOI2012]Longge的问题
    数论/the first wave
    bzoj3942: [Usaco2015 Feb]Censoring
    BZOJ 1059: [ZJOI2007]矩阵游戏( 匈牙利 )
    BZOJ 1013: [JSOI2008]球形空间产生器sphere( 高斯消元 )
    BZOJ 1823: [JSOI2010]满汉全席( 2-sat )
    BZOJ 4260: Codechef REBXOR( trie )
  • 原文地址:https://www.cnblogs.com/aaron511/p/11422205.html
Copyright © 2011-2022 走看看