影响报文超时上报的机制有哪些

电子说

1.3w人已加入

描述

前言

最近遇到一个CAN报文超时Notification不上报导致ECU不休眠的偶发问题,本文分享解决问题的思路及影响报文超时上报的机制,希望能给各位读者一点启发。

参考文档:

1. Specification of Communication AUTOSAR Release 4.3.0

本文使用的AUTOSAR配置工具为:Vector公司的Davinci

正文

1.问题描述

背景:ECU下电的两个必要条件是:本地硬线IGN == IgOff  &&  CAN报文中的点火信号等于IgOff,如果包含点火信号的CAN报文丢失,则判断该报文是否Timeout。

问题场景描述

初始状态:IgOn,CAN报文中点火信号等于IgOn

执行动作:IgOff,直接拔掉CAN工具(等同于所有报文掉线)

问题表现:偶发ECU不能休眠下电

初步分析:ECU不能下电时的Log中显示,IgOff后点火信号一直还是IgOn且没有收到点火信号所在报文的Timeout标志。

进一步分析:点火信号所在报文的超时标志是在Com模块配置的PDU的Signal的Callout函数中置位的,也就是说问题发生的时候报文超时的Callout没有被调用。

CAN

所以该问题的直接原因就是:IGN信号所在的报文偶发报文丢失不上报Timeout

2.尝试的复现办法

按照上诉步骤尝试20次复现问题,无论是从ECU表现(ECU休眠,电流接近为0)来看还是Debug断点调试(报文Timeout的Callout进入)来看都是正常的,无法复现问题……

思考:是不是下电流程或者某种机制导致Com的超时判断不再运行导致的,而且这个机制有效的时候正好在超时判断之前就会导致这个问题。如果是这样的话,我们把报文的超时时间配置更大,这个问题应该就会必现。

CAN

把超时时间配置为10 S,果然这个问题必现了 !

3.原因分析

Step 1: 先看下正常的ComTimeoutNotification的调用栈(方便分析是哪里出问题导致的)。

CAN

正常情况下,Com_MainFunctionRx_ComMainFunctionRx à Com_MainFunctionRxInternal à Com_RxDlMon_MainFunctionRx à Com_RxDlMon_CallTimeOutNotifications调用各个Notification

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分