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

    文章

    1950

    浏览量

    130744
  • 网络管理
    +关注

    关注

    0

    文章

    120

    浏览量

    27673
  • AUTOSAR
    +关注

    关注

    10

    文章

    362

    浏览量

    21572
收藏 人收藏

    评论

    相关推荐

    隐秘的串口中断BUG案例分享

    本文分享STM32L4平台串口驱动比较隐秘的BUG,分享的目的不在结论本身,而在于问题的分析过程,和如何形成标准,形成checklist,避免类似问题,以及在嵌入式开发中的思想。
    的头像 发表于 09-19 14:05 2184次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b>隐秘的串口中断<b class='flag-5'>BUG</b>案例分享

    matlab script node

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

    C语言中括号引发的……

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

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

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

    华为路由器配置实例

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

    文读懂如何解决MySQL数据库超时配置问题

    1. JDBC超时设置 2. 连接池超时设置 3. MyBatis查询超时 4. 事务超时
    发表于 10-25 16:28 6586次阅读
    <b class='flag-5'>一</b>文读懂如何解决MySQL数据库<b class='flag-5'>超时</b>配置问题

    用户近日曝光 iPhone 12 的奇怪的充电 bug

    近日有用户曝光了 iPhone 12 的奇怪的充电 bug,多口适配器在为该机充电时都会受影响。
    的头像 发表于 11-16 14:31 1774次阅读

    5G案例|T310超时引发VIVO终端 SCG failure失败资料下载

    电子发烧友网为你提供5G案例|T310超时引发VIVO终端 SCG failure失败资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-13 08:40 8次下载
    5G案例|T310<b class='flag-5'>超时</b><b class='flag-5'>引发</b>VIVO终端 SCG failure失败资料下载

    如何解决JVM中极小概率发生的bug

    编者按:笔者遇到非常典型 JVM 架构相关问题,在 x86 正常运行的应用,在 aarch64 环境上低概率偶现 JVM 崩溃。这是典型的 JVM 内部
    的头像 发表于 08-23 17:35 3406次阅读

    Elasticsearch底层模块:如何去规划和配置各种各样的node

    node module,主要是用来处理各种不同类型的节点的,es有哪些类型的node,另外就是对这些类型的node有些什么特殊的参数,对于
    的头像 发表于 12-22 10:18 892次阅读

    冗余电路导致的BUG

      昨天解了BUG低级错误导致的BUG
    的头像 发表于 05-14 15:28 894次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b>冗余电路导致的<b class='flag-5'>BUG</b>

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

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

    req-ack接口引发的问题分析

    最近定位了bug,代码是以前的同事留下的,没有经过太多充分的测试,且没有仿真平台,定位的过程是相当的痛苦,前后花了差不多星期。但是解
    的头像 发表于 09-06 17:36 720次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b>req-ack接口<b class='flag-5'>引发</b>的问题分析

    socket连接超时如何处理

    在网络编程中,socket连接超时常见的问题,它可能由多种原因引起,比如网络延迟、服务器负载过高或者客户端请求超时设置过短等。处理socket连接
    的头像 发表于 11-01 16:48 614次阅读

    socket 连接超时处理技巧

    在网络编程中,Socket连接超时常见的问题。处理超时的关键在于确保程序能够优雅地处理这些情况,避免程序崩溃或者无响应。以下是些处理
    的头像 发表于 11-12 14:13 380次阅读