前言
在AUTOSAR中,Ecu的喚醒流程并不能簡單的看作是對各個外設模塊的供電動作。Autosar給了軟件開發(fā)人員很大的自由度去設計目標項目Ecu的喚醒動作,而自由度越大的代價就是開發(fā)人員需要很好的設計Ecu的喚醒時序,提供Ecu喚醒過程的魯棒性。
喚醒源的狀態(tài)
在EcuM中規(guī)定了喚醒源的4中狀態(tài):NONE、PENDING、VALIDATED、EXPIRED。四種狀態(tài)關系的切換關系如下所示:
當Ecu上電時,喚醒源的初始狀態(tài)是NONE,當喚醒源狀態(tài)切換到NONE時,需要通知到BswM模塊,上圖也可以看出,喚醒源的每次狀態(tài)切換都需要通知到BswM模塊,通知接口:BswM_EcuM_CurrentWakeup。
EcuM是如何知道有喚醒事件呢?EcuM如果想知道有喚醒Ecu的事件,最好的方式就是給底層提供一個接口或者注冊一個回調(diào),Autosar里規(guī)定了標準接口:EcuM_SetWakeupEvent。當有喚醒事件發(fā)生時,底層的硬件模塊(例如:Transceiver、Sensor)最先識別到,之后通過該接口上報給EcuM。
EcuM主函數(shù)會輪詢檢測底層上報的喚醒事件,如果想進一步的分析喚醒事件是不是有效的總線喚醒源(網(wǎng)絡管理報文),需要Ecu有正常的收發(fā)報文能力,想要收發(fā)報文,Transceiver和Controller兩個模塊均需要啟動。一般來講,Transceiver會在程序初始化時進入正常的工作模式,而Controller進入正常的工作模式是EcuM調(diào)用EcuM_StartWakeupSources的結(jié)果,而該接口的內(nèi)部功能的實現(xiàn)由開發(fā)者自行把控,autosar并未做硬性的要求。
啟動Transceiver和Controller,建立了報文的正常收發(fā)能力,Ecu即可進一步的將報文上報上層模塊,如:CanIf,即此時Ecu可以拿到總線的RawData,不管是不是網(wǎng)絡管理報文,Ecu都可以做進一步的功能實現(xiàn),如收到診斷報文喚醒網(wǎng)絡等。
一般來說,會在EcuM模塊配置兩個時間參數(shù),CheckWakeup和ValidateWakeup時間,如果CheckWakeup時間走完走完沒有判斷到有效的喚醒源,則調(diào)用EcuM_StopWakeupSources關閉喚醒源,這里多數(shù)關閉controller,進而Ecu失去通信能力。
ValidateWakeup時間參數(shù)配置與否決定了是否使用喚醒事件的驗證功能,如果配置該參數(shù),且驗證喚醒事件有效后則通知ComM使能通信,調(diào)用ComM接口:ComM_EcuM_WakeupIndication。如果該參數(shù)沒有配置,則EcuM不在繞圈,直接通知BswM喚醒事件有效,通知ComM開啟通信。個人理解:該參數(shù)配置較合理。
第一:可以驗證喚醒事件的有效性,避免因總線抖動等干擾造成的非預期Ecu喚醒;
第二:如果使用的Transceiver沒有Pn功能,Ecu會因總線的擾動而不斷的喚醒,假設總線有應用報文沒有網(wǎng)絡管理報文,ValidateWakeup時間給0,Ecu將會不斷的走上下電流程,如果下電選擇OFF流程(實際項目中很多開發(fā)人員沒有開啟Reset流程的Operation,即直接冷啟動,這不符合autosar規(guī)范,也不安全),將會帶來未知問題(如果Ecu內(nèi)核有一定時間內(nèi)喚醒次數(shù)限制,超過閾值則可能上鎖保護),設置該參數(shù)可以有效的延遲Ecu喚醒頻率。
審核編輯:劉清
-
接口
+關注
關注
33文章
8713瀏覽量
152016 -
總線
+關注
關注
10文章
2904瀏覽量
88444 -
AUTOSAR
+關注
關注
10文章
363瀏覽量
21801
發(fā)布評論請先 登錄
相關推薦
【AI技術(shù)支持】ESP32-C3-MINI-1U模組睡眠模式下喚醒死機問題
![【AI技術(shù)支持】ESP32-C3-MINI-1U模組睡眠模式下<b class='flag-5'>喚醒</b>死機問題](https://file.elecfans.com/web2/M00/02/C4/pYYBAGDSzfeAP86XAAAO5PbqJbI698.png)
TCAN1043xx-Q1具有CAN FD和喚醒功能的低功耗故障保護CAN收發(fā)器數(shù)據(jù)表
![TCAN1043xx-Q1具<b class='flag-5'>有</b>CAN FD和<b class='flag-5'>喚醒</b>功能的低功耗故障保護CAN收發(fā)器數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
請問esp32c6 wifi6 twt如何在程序里知道CPU已經(jīng)喚醒?
藍牙模塊喚醒原理是怎樣的?
![藍牙模塊<b class='flag-5'>喚醒</b>原理是怎樣的?](https://file1.elecfans.com/web2/M00/EA/7A/wKgaomZUOMqASKXGAAHPXAYYgH0656.png)
三星貼片電容規(guī)格有哪些呢?怎么選擇呢?
![三星貼片電容規(guī)格<b class='flag-5'>有</b>哪些<b class='flag-5'>呢</b>?怎么選擇<b class='flag-5'>呢</b>?](https://file1.elecfans.com/web2/M00/E8/85/wKgaomZMOxyAS4KaAAGpR9lc_lM352.png)
STM32L152進入待機模式1分鐘喚醒一次,18個小時后無法喚醒是怎么回事?
stm8s halt之后無法喚醒怎么解決?
stop mode下怎么實現(xiàn)按下矩陣鍵盤的任意鍵將系統(tǒng)喚醒呢?
操作FreeRTOS時,執(zhí)行__WFI()導致系統(tǒng)滴答中斷無法喚醒設備怎么解決?
PC端打開串口助手,怎么會影響到STM32的WKUP喚醒呢?
使用RTC喚醒中斷喚醒休眠狀態(tài)的MCU出現(xiàn)故障怎么解決?
DCM模塊喚醒網(wǎng)絡主動與被動喚醒機制探討
![DCM模塊<b class='flag-5'>喚醒</b>網(wǎng)絡主動與被動<b class='flag-5'>喚醒</b>機制探討](https://file1.elecfans.com/web2/M00/C4/79/wKgZomXzvvWASss4AABdeiX-MWo649.png)
評論