开发平台介绍:

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

名词:

  版本A,问题及修改涉及两个版本,其中最旧版本称为版本A

  版本B,问题及修改涉及两个版本,其中较新版本称为版本B

  硬件设备M,项目系统内一个其它硬件设备(Meter)

  终端,使用NUC970的硬件

异常表现:

  1、版本A,2018.8发现当应用程序调用can_write操作频率较高时(10ms内),容易发生写失败异常(频率越高越容易发生),经过测试只能通过,DOWN、UP 重启CAN的操作才能恢复正常。

  2、版本B,2019.4应用于项目时,发现因为终端CAN数据问题会导致系统内一个"硬件设备M"重启,经过多番排查,最后发现终端会在接收CAN数据量较大时,发送的CAN数据有可能变成某接收ID(有一定随机性)的远程帧,当此远程帧ID与硬件设备M接收的ID相同时,会导致其重启。

为什么异常:

  1、发送频率较高时CAN总线死机问题,经技术支持2018年确认是驱动层发送缓存的设计问题,暂时不能解决,需等新版本驱动程序。

  2、发送异常远程帧的问题,经过排查认为是驱动程序收发都使用CAN内存接口IF1,因为处理的不好可能发生数据交叉导致发送了假数据。

解决问题:

  1、2019.4 官方提供了新驱动程序,更换后测试可以高频发送数据CAN总线不假死。

  2、两个方法解决问题2:a、发送数据使用IF1,接收数据使得IF2,从硬件上独立收发,不再冲突,经测试可以解决此问题;b、使用新驱动(共用IF1)也可以解决问题;最后决定两个办法都使用,新驱动+独立使用IF1\IF2。

解决问题用时2天,测试查找定位问题用时15天。特此记录,以备后需。

最新文章

  1. java使用tomcat7的maven插件发布到服务器
  2. 第一次装TFS的曲折经历
  3. Codeforces Round #329 (Div. 2) D. Happy Tree Party 树链剖分
  4. Android文件选择器的实例分享
  5. DB天气app冲刺第一天
  6. jbpm4 回退、会签、撤销、自由流
  7. localStorage点击次数存储
  8. MVC和三层架构的区别
  9. eclipse中svn的各种状态图标详解
  10. JS表格分页(封装版)
  11. js加密转python3
  12. AngularJs 常用指令标签
  13. PHP使用http_build_query()构造URL字符串的方法(可将POST参数组转换拼接成GET请求链接)
  14. nginx-2.nginx是什么
  15. Spark记录-SparkSQL
  16. [No00004F]史上最全Vim快捷键键位图(入门到进阶)vim常用命令总结
  17. Vertica备份恢复
  18. sa learning
  19. JavaScript 常用正则示例
  20. segmentfault hackthon比赛感悟

热门文章

  1. Python3之高阶函数filter
  2. Spring 使用复选选按钮
  3. JAVA 字节码操作利器javassist
  4. eNSP——ACL基础设置
  5. Windows删除某服务
  6. python代码注释 - python基础入门(4)
  7. RAID(独立磁盘冗余阵列)
  8. 【转载】熟练利用google hacking来辅助我们快速渗透
  9. redis实战---读书笔记
  10. laravel6.0路由