前言
最近遇到一個CAN報文超時Notification不上報導致ECU不休眠的偶發問題,本文分享解決問題的思路及影響報文超時上報的機制,希望能給各位讀者一點啟發。
參考文檔:
1.Specification of CommunicationAUTOSAR 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沒有被調用。
所以該問題的直接原因就是:IGN信號所在的報文偶發報文丟失不上報Timeout。
2.嘗試的復現辦法
按照上訴步驟嘗試20次復現問題,無論是從ECU表現(ECU休眠,電流接近為0)來看還是Debug斷點調試(報文Timeout的Callout進入)來看都是正常的,無法復現問題……
思考:是不是下電流程或者某種機制導致Com的超時判斷不再運行導致的,而且這個機制有效的時候正好在超時判斷之前就會導致這個問題。如果是這樣的話,我們把報文的超時時間配置更大,這個問題應該就會必現。
把超時時間配置為10 S,果然這個問題必現了 !
3.原因分析
Step 1: 先看下正常的ComTimeoutNotification的調用棧(方便分析是哪里出問題導致的)。
正常情況下,Com_MainFunctionRx_ComMainFunctionRx àCom_MainFunctionRxInternal àCom_RxDlMon_MainFunctionRx àCom_RxDlMon_CallTimeOutNotifications調用各個Notification
-
模塊
+關注
關注
7文章
2520瀏覽量
46712 -
CAN
+關注
關注
56文章
2497瀏覽量
460484 -
ecu
+關注
關注
14文章
833瀏覽量
53994 -
報文
+關注
關注
0文章
31瀏覽量
3991
原文標題:AUTOSAR架構下報文掉線超時不上報問題分析
文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論