0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享一个实例:Node路由超时引发的Bug

冬至配饺子 来源:开心果 Need Ca 作者:开心果 Need Ca 2022-08-23 17:42 次阅读

项目包含Autosar网络管理时,一般会要求Node外发的第一帧是网络管理报文,目的是为快速唤醒网络;同时也会充分考虑通信栈的任务周期和时序,因为网络状态切换与其密切相关,如果未考虑好这两点则可能带来潜在的Bug。本文从工程实际出发,分享一个实例:Node路由超时引发的Bug。

1、需求描述

如下图,Node1所在CAN/Flexray总线接收网络管理报文NM1,该网络管理报文在VCU内部转发给Node2(Node2连接CAN总线),如果收到的NM1包含Node2的PNCdes置位,则Node2网络唤醒,且Node2发送网络管理报文NM2。这里使用了PN的GateWay功能。

注意:Node1接收的NM1报文可以是不同的节点发来的网络管理报文,即测试时,接收到的NM1报文时间可以是随机的。

pYYBAGMEoHGANn1OAABYpWt56Zo972.png

接收的NM1报文,第一次PNCsrc = 1、PNCdes = 1时,设置时间为T1,Node2外发第一帧NM2的时间设置为T2,需求规定T2-T1 < 15ms,偏差10%,即(T2-T1)max < 15+15*10% = 16.5ms,T2-T1=Tgate。

NM1在Node1 Bus和NM2在Node2 Bus的具体行为如下所示:

pYYBAGMEoIiAIRh-AACq6SOaFJE955.png

实际测试结果实际测试Tgate > 16.5ms,不符合需求,Bug就这么来了。

2、Bug原因分析

问题点1:Node2发出的第一帧报文不是网络管理报文NM2,而是Node2的应用报文(周期性报文),由于NM2的优先级低于应用报文,导致NM2发送延迟。

具体分析1:如下图所示,如果NM、App等报文在通信开启的那一刻(t0)都请求驱动发送报文,比如:Can Controller,它只能根据优先级(CANID)决定报文发送顺序,因为NM报文相对App报文优先级低,所以NM报文会被延迟发送。

如果让每个周期性App报文,偏移(Offset)一段时间(t1、t2等)发送,而不是在t0时刻抢占NM报文,则可以让NM报文优先发送。

poYBAGMEoJyAPFtNAAB-SuObkeg357.png

问题点2

:通信栈模块周期不匹配,这个因素影响较大

具体分析2

:比如CanSM、CanNM、Can等模块任务周期是5ms,ComM模块任务周期是20ms。当收到NM1中的

PNCsrc = 1

时,信息由CanNM通知到ComM,ComM切换到FULL_COMMUNICATION,这个过程实际只是一个状态切换指令下发,真正做状态切换的是CanSM,而CanSM状态机的切换需要时间,切换状态后通知到ComM,

此时ComM至少要一个任务周期(20ms)才能知道状态是否切换成功,切换成功才请求NM启动网络,

网络状态切换告知ComM时间过长导致路由时间超时

pYYBAGMEoLOAAHOlAAEanvOjfBc701.png

3、Bug修复策略

问题点1修复策略

CanNM模块修改配置

配置Retry Frist Message Request,确保Node2的NM2报文发送成功,即当前周期发送失败,下一周期继续尝试发送。

Com模块修改配置

Com模块中,配置所有周期性(PERIODIC)/混合(MIXED)应用报文偏移值(ComTxModeTimeOffset,默认值为0),避免高优先级的应用报文在通信开始时,抢占网络管理报文,确保网络管理报文被优先发送。

问题点2修复策略

修改ComM模块任务周期。由20ms调整到5ms,与CanSM、CanNM、Can等通信模块任务周期匹配,确保ComM能更快地获取底层状态切换结果。


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN总线
    +关注

    关注

    145

    文章

    1812

    浏览量

    129630
  • 网络管理
    +关注

    关注

    0

    文章

    107

    浏览量

    27512
  • AUTOSAR
    +关注

    关注

    9

    文章

    330

    浏览量

    21142
收藏 人收藏

    评论

    相关推荐

    华为路由器交换机VLAN配置实例

    华为路由器交换机VLAN配置实例[hide]华为路由器交换机VLAN配置实例使用4台PC(pc多和少,原理是样的,所以这里我只用了4台pc
    发表于 05-25 00:21

    matlab script node

    哪位大神有matlab script node 操作的视频教程 或者实例没有求分享啊谢谢了
    发表于 10-07 23:01

    zigbee 有些终端在路由协调器重启后不能联网

    ,再上电路由、协调器(路由协调器都是没有加NV_RESTORE的),发现有终端没有连上,终端加到21、22,反复做上述测试,总是有几个
    发表于 03-24 14:09

    反馈论坛BUG

    `浏览论坛是件很愉快的事情,内容挺丰富。发现不知道是不是BUG的东西,供参阅:每次打开帖子,总有
    发表于 07-13 19:52

    【orangepi zero试用体验】安装Node.JS运行环境与示例

    本帖最后由 eyecf 于 2016-12-24 17:51 编辑 本期要和大家介绍下OrangePI zero安装Node.js运行环境的方法,并运行下vuejs的实例
    发表于 12-24 17:07

    ZStack每级的最大路由器个数问题

    [MAX_NODE_DEPTH+1] = [5,5,5,5,5,0]; #endif // STACK_PROFILE_ID 如果是HOME_CONTROLS时,默认的路由深度为5级,每级最多的路由节点数为6. 那如果
    发表于 06-01 09:40

    ISE 14.7路由器检测到或多个连接的不可路由

    已经在fpga编辑器中查看了未布线的设计,看起来(至少对我而言)由于不同的GEN_LANES实例的放置分散开来,路由器无法连接它们。我不确定这是否是实际问题,以及我应该如何解决它。我有另一个fpga具有
    发表于 11-13 14:37

    C语言中括号引发的……

    C语言中括号引发的……作者:薛定谔的coding猫今天给大家带来比较典型的问题,
    发表于 05-19 14:06

    lwip网路组件中的测试实例出现bug

    主题:测试实例1、ftpd中似乎bug,现象:ftpd_start()运行该函数,发现旦连接和互传数据,就会有内存哗哗泄漏,list_mem()可以看到内存占用从12K上升到40K
    发表于 04-01 11:02

    如果wifi mesh无路由组网后,root node 怎么让手机APP连接并控制所有节点?

    如果wifi mesh无路由组网后,root node 怎么让手机APP连接并控制所有节点?有没有这方面的DEMO?
    发表于 03-10 08:39

    怎么计算modbus的超时时间?

    要怎么才能计算modbus的超时时间
    发表于 10-11 06:33

    华为路由器配置实例

    华为路由器配置实例 华为路由器(R2621)、交换机(S3026e)各一台,组建一VLAN,实现虚拟网和物理网之间的连接。实现防火墙策略,
    发表于 05-25 08:17 4285次阅读

    实例分析关于美团Node的全栈开发实践

    前后端分离的背景 前后端分离显然已不是什么新鲜的话题,Zakas在2013年10月份就曾发表过一篇博客《Node.js and the new web front-end》讨论Node背景下新时代
    发表于 10-10 17:16 0次下载
    <b class='flag-5'>实例</b>分析关于美团<b class='flag-5'>Node</b>的全栈开发实践

    基于Node-RED的优易通串口服务器应用实例

    实例的方式,详细介绍了基于Node-RED的优易通串口服务器采集Modbus-RTU水位传感器数据,并将数据可视化的过程。
    的头像 发表于 05-29 21:15 1530次阅读
    基于<b class='flag-5'>Node</b>-RED的优易通串口服务器应用<b class='flag-5'>实例</b>

    写芯片超时该如何解决啊?

    写芯片超时该如何解决啊? 芯片在现代电子设备中扮演着至关重要的角色。它们是设备内部运行的核心,控制着所有的操作。然而,由于各种原因,芯片可能会发生超时问题。超时问题一旦发生,可能会导致芯片停止正常
    的头像 发表于 09-13 10:43 2576次阅读