前言
最近遇到一個(gè)CAN報(bào)文超時(shí)Notification不上報(bào)導(dǎo)致ECU不休眠的偶發(fā)問題,本文分享解決問題的思路及影響報(bào)文超時(shí)上報(bào)的機(jī)制,希望能給各位讀者一點(diǎn)啟發(fā)。
參考文檔:
1.Specification of CommunicationAUTOSAR Release 4.3.0
本文使用的AUTOSAR配置工具為:Vector公司的Davinci
正文
1.問題描述
背景:ECU下電的兩個(gè)必要條件是:本地硬線IGN== IgOff && CAN報(bào)文中的點(diǎn)火信號(hào)等于IgOff,如果包含點(diǎn)火信號(hào)的CAN報(bào)文丟失,則判斷該報(bào)文是否Timeout。
問題場(chǎng)景描述
初始狀態(tài):IgOn,CAN報(bào)文中點(diǎn)火信號(hào)等于IgOn
執(zhí)行動(dòng)作:IgOff,直接拔掉CAN工具(等同于所有報(bào)文掉線)
問題表現(xiàn):偶發(fā)ECU不能休眠下電
初步分析:ECU不能下電時(shí)的Log中顯示,IgOff后點(diǎn)火信號(hào)一直還是IgOn且沒有收到點(diǎn)火信號(hào)所在報(bào)文的Timeout標(biāo)志。
進(jìn)一步分析:點(diǎn)火信號(hào)所在報(bào)文的超時(shí)標(biāo)志是在Com模塊配置的PDU的Signal的Callout函數(shù)中置位的,也就是說問題發(fā)生的時(shí)候報(bào)文超時(shí)的Callout沒有被調(diào)用。

所以該問題的直接原因就是:IGN信號(hào)所在的報(bào)文偶發(fā)報(bào)文丟失不上報(bào)Timeout。
2.嘗試的復(fù)現(xiàn)辦法
按照上訴步驟嘗試20次復(fù)現(xiàn)問題,無論是從ECU表現(xiàn)(ECU休眠,電流接近為0)來看還是Debug斷點(diǎn)調(diào)試(報(bào)文Timeout的Callout進(jìn)入)來看都是正常的,無法復(fù)現(xiàn)問題……
思考:是不是下電流程或者某種機(jī)制導(dǎo)致Com的超時(shí)判斷不再運(yùn)行導(dǎo)致的,而且這個(gè)機(jī)制有效的時(shí)候正好在超時(shí)判斷之前就會(huì)導(dǎo)致這個(gè)問題。如果是這樣的話,我們把報(bào)文的超時(shí)時(shí)間配置更大,這個(gè)問題應(yīng)該就會(huì)必現(xiàn)。

把超時(shí)時(shí)間配置為10 S,果然這個(gè)問題必現(xiàn)了 !
3.原因分析
Step 1: 先看下正常的ComTimeoutNotification的調(diào)用棧(方便分析是哪里出問題導(dǎo)致的)。

正常情況下,Com_MainFunctionRx_ComMainFunctionRx àCom_MainFunctionRxInternal àCom_RxDlMon_MainFunctionRx àCom_RxDlMon_CallTimeOutNotifications調(diào)用各個(gè)Notification
-
模塊
+關(guān)注
關(guān)注
7文章
2837瀏覽量
53291 -
CAN
+關(guān)注
關(guān)注
59文章
3067瀏覽量
472748 -
ecu
+關(guān)注
關(guān)注
14文章
983瀏覽量
57272 -
報(bào)文
+關(guān)注
關(guān)注
0文章
39瀏覽量
4357
原文標(biāo)題:AUTOSAR架構(gòu)下報(bào)文掉線超時(shí)不上報(bào)問題分析
文章出處:【微信號(hào):汽車電子嵌入式,微信公眾號(hào):汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
在STM32的CAN收發(fā)通信中,接收超時(shí)為什么不能發(fā)出一個(gè)報(bào)文的功能?
TC387從App跳回PBL在下載SBL,進(jìn)入SBL后上位機(jī)發(fā)送的CAN報(bào)文響應(yīng)超時(shí),怎么解決?
espconn_gethostbyname接口DNS解析超時(shí)機(jī)制要自己做嗎?
請(qǐng)問HAL庫的超時(shí)機(jī)制可以修改嗎?
Linux串口通信的超時(shí)機(jī)制
為什么32個(gè)CAN設(shè)備同時(shí)每隔1秒進(jìn)行上報(bào)會(huì)出現(xiàn)有些上報(bào)不成功的現(xiàn)象呢
M482單片機(jī)只會(huì)上報(bào)FIFO的中斷,不會(huì)上報(bào)超時(shí)中斷的原因?
嵌入式網(wǎng)絡(luò)終端報(bào)文收發(fā)機(jī)制研究與實(shí)現(xiàn)
基于公平心跳超時(shí)容錯(cuò)機(jī)制
網(wǎng)絡(luò)管理報(bào)文的收/發(fā)與網(wǎng)絡(luò)管理時(shí)間配置參數(shù)解析
CAN報(bào)文發(fā)送有優(yōu)先級(jí)嗎?
如何設(shè)計(jì)STM32嵌入式程序的超時(shí)機(jī)制?
STM32程序超時(shí)設(shè)計(jì)
STM32串口中斷接收不定長報(bào)文介紹
影響報(bào)文超時(shí)上報(bào)的機(jī)制有哪些
評(píng)論