0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

理一理AUTOSAR架構(gòu)下的喚醒源事件

832065824 ? 來源:汽車電子嵌入式 ? 2023-07-14 09:11 ? 次閱讀

前言

最近的項(xiàng)目負(fù)責(zé)網(wǎng)絡(luò)管理部分,網(wǎng)路喚醒和ECU系統(tǒng)的休眠關(guān)系緊密,對系統(tǒng)的喚醒源事件感覺理解的不是很透徹,今天就來理一理AUTOSAR架構(gòu)下的喚醒源事件。本文就先介紹AUTOSAR架構(gòu)下EcuM模塊管理的喚醒源事件,然后介紹每一個(gè)和喚醒源相關(guān)的接口函數(shù)及其適用場景,然后回答以下幾個(gè)問題:

1.喚醒源有哪幾種狀態(tài),每個(gè)狀態(tài)之間是怎么切換的?

2.喚醒源會(huì)影響系統(tǒng)的下電/休眠流程嗎?

3.斷電系統(tǒng),喚醒后沒有Wakeup Sequences, 有 Wakeup validation sequence么?

正文

1.喚醒源狀態(tài)

EcuM模塊管理所有的喚醒源,每個(gè)喚醒源有四個(gè)狀態(tài):ECUM_WKSTATUS_NONE,ECUM_WKSTATUS_PENDING,ECUM_WKSTATUS_VALIDATED, ECUM_WKSTATUS_EXPIRED。ECU上電后(復(fù)位后)每個(gè)喚醒源處于ECUM_WKSTATUS_NONE狀態(tài)。

79c83d00-21dd-11ee-962d-dac502259ad0.png

從上圖可以看出,喚醒源的每次狀態(tài)切換都需要通過BswM_EcuM_CurrentWakeup接口通知到BswM模塊。

ECUM_WKSTATUS_NONE切換到ECUM_WKSTATUS_PENDING或ECUM_WKSTATUS_VALIDATED狀態(tài)

喚醒源事件可以通過底層的AUTOSAR標(biāo)準(zhǔn)模塊(如:Can Transceiver等)主動(dòng)上報(bào)(需要配置Transceiver的喚醒源檢測功能),也可以通過手寫模塊來輪詢檢測上報(bào)(不配置AUTOSAR標(biāo)準(zhǔn)模塊的喚醒檢測功能,全部統(tǒng)一由手寫模塊來管理)。無論是配置還是手寫模塊,統(tǒng)一使用EcuM_SetWakeupEvent接口上報(bào)喚醒源事件,EcuM模塊根據(jù)該喚醒源是否配置了校驗(yàn)切換喚醒狀態(tài)從ECUM_WKSTATUS_NONE切換到ECUM_WKSTATUS_PENDING或ECUM_WKSTATUS_VALIDATED狀態(tài)。

ECUM_WKSTATUS_PENDING狀態(tài)切換到ECUM_WKSTATUS_VALIDATED狀態(tài)

背景知識(shí)1:本地(如IGN硬線)喚醒源喚醒一般不配置(在EcuM模塊中配置)喚醒源的校驗(yàn)(Validation),遠(yuǎn)程網(wǎng)絡(luò)(如Can喚醒)喚醒源一般配置喚醒源檢驗(yàn)。CAN網(wǎng)絡(luò)喚醒需要配置CanTrcv和CanIf模塊,且一般配置只有收到NM網(wǎng)絡(luò)管理報(bào)文喚醒,也就是說,只有收到NM網(wǎng)絡(luò)管理報(bào)文后CanIf才會(huì)設(shè)置一個(gè)有效喚醒源的標(biāo)志Flag,EcuM的輪詢檢測可以通過CanIf_CheckValidation讀取喚醒標(biāo)致。

背景知識(shí)2:想分析喚醒事件是不是有效的總線喚醒源(網(wǎng)絡(luò)管理報(bào)文),需要Ecu有正常的收發(fā)報(bào)文能力,想要收發(fā)報(bào)文,Transceiver和Controller兩個(gè)模塊均需要啟動(dòng)。一般來講,Transceiver會(huì)在程序初始化時(shí)進(jìn)入正常的工作模式,而Controller進(jìn)入正常的工作模式是EcuM調(diào)用EcuM_StartWakeupSources的結(jié)果,而該接口為Callout函數(shù),內(nèi)部功能自定義實(shí)現(xiàn),一般在EcuM_StartWakeupSources中調(diào)用CanSM_StartWakeupSource,CanSM模塊會(huì)開啟Can Controller。也就是說,在EcuM模塊調(diào)用CanIf_CheckValidation校驗(yàn)喚醒源事件前,需要先調(diào)用EcuM_StartWakeupSources。

EcuM的Mainfunction中會(huì)輪詢喚醒源狀態(tài),在檢測到喚醒源狀態(tài)切換為ECUM_WKSTATUS_PENDING后就會(huì)開啟喚醒源狀態(tài)校驗(yàn): EcuM_MainFunction --> EcuM_CheckValidation --> CanIf_CheckValidation -->讀取網(wǎng)路喚醒源標(biāo)志 --> 如果喚醒源標(biāo)志置位則調(diào)用EcuM_ValidateWakeupEvent,喚醒源頭從ECUM_WKSTATUS_PENDING狀態(tài)切換到ECUM_WKSTATUS_VALIDATED狀態(tài)。

ECUM_WKSTATUS_PENDING狀態(tài)切換到ECUM_WKSTATUS_EXPIRED

EcuM的Mainfunction在輪詢喚醒源狀態(tài)時(shí)并沒有檢測到有效的喚醒源(通過CanIf_CheckValidation并沒有讀取到有效的喚醒標(biāo)志,比如通過應(yīng)用報(bào)文喚醒ECU后設(shè)置了WakeupEvent),在ValidateWakeup timer超時(shí)(Expired)后就會(huì)切換喚醒轉(zhuǎn)到到ECUM_WKSTATUS_EXPIRED。

從其他狀態(tài)切換到ECUM_WKSTATUS_NONE:

系統(tǒng)中調(diào)用調(diào)用了EcuM_ClearWakeupEvent接口后,喚醒源狀態(tài)切換回ECUM_WKSTATUS_NONE。喚醒源的清除需要User去調(diào)用,如果是手寫模塊監(jiān)控喚醒源的話,可以實(shí)時(shí)Set/Clear喚醒源,如果通過AUTOSAR標(biāo)準(zhǔn)模塊管理喚醒源的話,在系統(tǒng)滿足休眠條件前清除掉所有喚醒源,在進(jìn)入Shutdown的判斷條件中加上喚醒源都不為Pending/Valid的條件。

2.喚醒源相關(guān)的接口函數(shù)

EcuM提供以下接口來獲取喚醒源專題:

· EcuM_GetPendingWakeupEvents

· EcuM_GetValidatedWakeupEvents

· EcuM_GetExpiredWakeupEvents

通過以下接口操作喚醒源的狀態(tài):

· EcuM_ClearWakeupEvent

· EcuM_SetWakeupEvent

· EcuM_ValidateWakeupEvent

· EcuM_CheckWakeup

· EcuM_DisableWakeupSources

· EcuM_EnableWakeupSources

· EcuM_StartWakeupSources

· EcuM_StopWakeupSources

EcuM_GetPendingWakeupEvents

EcuM_GetValidatedWakeupEvents

EcuM_GetExpiredWakeupEvents

這三個(gè)接口用來獲取喚醒源的狀態(tài),一般在BswM管理ECU狀態(tài)中會(huì)使用,也就是上文所說的在ECU進(jìn)入Shutdown/Sleep狀態(tài)前會(huì)通過這幾個(gè)接口來判斷喚醒狀態(tài)是不是都已經(jīng)為NONE狀態(tài)了。

EcuM_ClearWakeupEvent

EcuM_SetWakeupEvent

EcuM_ValidateWakeupEvent

這3個(gè)接口的分析見第2章節(jié)的分析

EcuM_CheckWakeup

這個(gè)接口為Callout函數(shù),也就是內(nèi)容由User自定義實(shí)現(xiàn)。這個(gè)函數(shù)只有深度休眠系統(tǒng)/EcuM走GoSleep Sequence才會(huì)用到,一般EcuM_CheckWakeup -> CanIf_CheckWakeup -> CanTrcv_CheckWakeup,CanTrcv_CheckWakeup函數(shù)中會(huì)檢測收發(fā)器(TJA1043)的STB和ERR引腳來判斷是否有總線喚醒事件,如果有的話嗎,CanTrcv_CheckWakeup調(diào)用EcuM_SetWakeupEvent上報(bào)喚醒事件。如果配置了Check Wakeup Timeout的話,在EcuM_CheckWakeup函數(shù)中調(diào)用EcuM_StartCheckWakeup,啟動(dòng)相應(yīng)WakeupSource的CheckWakeupTimer,如果喚醒源的檢查是異步完成的(CheckWakeupTimer),CheckWakeupTimer參數(shù)是EcuM延遲ECU關(guān)閉的時(shí)間的初始值,一般不配置CheckWakeupTimer。

7a68b460-21dd-11ee-962d-dac502259ad0.png

EcuM_DisableWakeupSources

EcuM_EnableWakeupSources

這兩個(gè)接口為Callout函數(shù),也就是內(nèi)容由User自定義實(shí)現(xiàn)。這兩個(gè)函數(shù)只有深度休眠系統(tǒng)/EcuM走GoSleep Sequence才會(huì)調(diào)用到。深度休眠系統(tǒng)需要在下電前把喚醒引腳配置為中斷口,在休眠起來后把喚醒引腳的中斷屬性Disable,可以通過這兩個(gè)Callout函數(shù)實(shí)現(xiàn)。也就是在EcuM_EnableWakeupSources函數(shù)Enbale喚醒引腳的INT功能,在EcuM_DisableWakeupSources函數(shù)中Disable喚醒引腳的INT功能。

EcuM_StartWakeupSources

EcuM_StopWakeupSources

這兩個(gè)接口為Callout函數(shù),也就是內(nèi)容由User自定義實(shí)現(xiàn)。EcuM_Mainfunction在檢測到喚醒源事件由ECUM_WKSTATUS_NONE切換到ECUM_WKSTATUS_PENDING狀態(tài)時(shí)調(diào)用EcuM_StartWakeupSources。在EcuM_StartWakeupSources中一般判斷喚醒源是網(wǎng)絡(luò)喚醒源后調(diào)用CanSM_StartWakeupSource,CanSM最終會(huì)開啟Can Controller,這樣Can模塊就能正常接收報(bào)文,為后面的EcuM_CheckValidation校驗(yàn)做好準(zhǔn)備。EcuM_StartWakeupSources需要在EcuM_CheckValidation前調(diào)用,因?yàn)閱拘言葱r?yàn)需要Can Controller能接收報(bào)文

7a858dec-21dd-11ee-962d-dac502259ad0.png

EcuM_Mainfunction在檢測到喚醒源事件由ECUM_WKSTATUS_PENDING切換到ECUM_WKSTATUS_EXPIED狀態(tài)時(shí)調(diào)用EcuM_StopWakeupSources。在EcuM_StopWakeupSources中一般判斷喚醒源是網(wǎng)絡(luò)喚醒源后調(diào)用CanSM_StopWakeupSource,CanSM最終會(huì)關(guān)閉Can Controller,這樣Can模塊就不能接收報(bào)文,為系統(tǒng)休眠做好準(zhǔn)備。

7aa2a490-21dd-11ee-962d-dac502259ad0.png

3.問題回答

問題1:喚醒源有哪幾種狀態(tài),每個(gè)狀態(tài)之間是怎么切換的?

:喚醒源有ECUM_WKSTATUS_NONE, ECUM_WKSTATUS_PENDING, ECUM_WKSTATUS_VALIDATED, ECUM_WKSTATUS_EXPIRED四種狀態(tài),具體切換參考第2節(jié)。

問題2:喚醒源會(huì)影響系統(tǒng)的下電/休眠流程嗎?

:會(huì)。但是EcuM_Flex不會(huì)去check喚醒源的狀態(tài),需要我們自己把喚醒狀態(tài)的條件加到ECU系統(tǒng)狀態(tài)切換條件中去。根具體的說,在調(diào)用EcuM_GoDown/EcuM_GoHal前需要判斷說有喚醒源是不是都已經(jīng)NONE狀態(tài)了。

問題3:斷電系統(tǒng),喚醒后沒有Wakeup Sequences, 有 Wakeup validation sequence么?

:有。EcuM的Wakeup validation sequence和斷電系統(tǒng)或者深度休眠系統(tǒng)無關(guān)。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 收發(fā)器
    +關(guān)注

    關(guān)注

    10

    文章

    3370

    瀏覽量

    105791
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    349

    瀏覽量

    21446
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    491

    瀏覽量

    27457
  • CAN模塊
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    8735
  • ECU設(shè)計(jì)
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    3284

原文標(biāo)題:AUTOSAR 架構(gòu)下EcuM喚醒源事件詳解

文章出處:【微信號(hào):汽車電子嵌入式,微信公眾號(hào):汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AUTOSAR架構(gòu)的多核通信介紹

    隨著汽車ECU迅速的往域控制器方向發(fā)展,ECU要處理的任務(wù)越來越多,單核CPU的負(fù)載越來越大,多核ECU勢在必行。AUTOSAR架構(gòu)OS支持多核處理,本系列文章將詳細(xì)介紹AUTOSAR
    的頭像 發(fā)表于 11-13 09:24 ?1980次閱讀
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>架構(gòu)</b><b class='flag-5'>下</b>的多核通信介紹

    AUTOSAR分層架構(gòu)

    AUTOSAR分層架構(gòu)
    發(fā)表于 09-26 11:12

    功能安全---AUTOSAR架構(gòu)深度解析 精選資料分享

    AUTOSAR架構(gòu)深度解析本文轉(zhuǎn)載于:AUTOSAR架構(gòu)深度解析AUTOSAR的分層式設(shè)計(jì),用于支持完整的軟件和硬件模塊的獨(dú)立性(Indep
    發(fā)表于 07-23 08:34

    AUTOSAR架構(gòu)深度解析 精選資料推薦

    AUTOSAR架構(gòu)深度解析本文轉(zhuǎn)載于:AUTOSAR架構(gòu)深度解析目錄AUTOSAR架構(gòu)深度解析
    發(fā)表于 07-28 07:40

    AUTOSAR架構(gòu)深度解析 精選資料分享

    AUTOSAR架構(gòu)深度解析本文轉(zhuǎn)載于:AUTOSAR架構(gòu)深度解析AUTOSAR的分層式設(shè)計(jì),用于支持完整的軟件和硬件模塊的獨(dú)立性(Indep
    發(fā)表于 07-28 07:02

    STM32的核心Cortex-M3處器是什么

    STM32的核心Cortex-M3處器是個(gè)標(biāo)準(zhǔn)化的微控制器結(jié)構(gòu),希望思考一下,何為標(biāo)準(zhǔn)化?簡言之,Cortex-M3處器擁有32位CPU,并行總線結(jié)構(gòu),嵌套中斷向量控制單元,調(diào)試
    發(fā)表于 08-02 08:52

    關(guān)于AUTOSAR架構(gòu)的知識(shí)點(diǎn)看完你就懂了

    關(guān)于AUTOSAR架構(gòu)的知識(shí)點(diǎn)看完你就懂了
    發(fā)表于 10-18 07:41

    STM32的核心Cortex-M3處器的標(biāo)準(zhǔn)化是什么意思

    STM32的核心Cortex-M3處器是個(gè)標(biāo)準(zhǔn)化的微控制器結(jié)構(gòu),希望思考一下,何為標(biāo)準(zhǔn)化?簡言之,Cortex-M3處器擁有32位CPU,并行總線結(jié)構(gòu),嵌套中斷向量控制單元,調(diào)試
    發(fā)表于 12-06 07:53

    Arm Cortex-R82處器技術(shù)參考手冊

    Cortex?-R82處器是款中等性能的多核有序超標(biāo)量處理器,適用于實(shí)時(shí)嵌入式應(yīng)用。 Cortex?-R82處器采用ARM?V8-R AArch64架構(gòu)。 ARM?V8-R AA
    發(fā)表于 08-17 07:45

    AUTOSAR架構(gòu)的WdgDriver WdgIf WdgM模塊

    本文主要介紹AUTOSAR 架構(gòu)的WdgDriver WdgIf WdgM 模塊,分析模塊之間的依賴關(guān)系以及運(yùn)行原理以幫助快速理解。本文以MPC5746R為主控芯片,以FS6500為SBC
    的頭像 發(fā)表于 09-09 11:17 ?6320次閱讀

    AUTOSAR軟件架構(gòu)中RTE的實(shí)現(xiàn)方法

    介紹了AUTOSAR軟件架構(gòu)中RTE的實(shí)現(xiàn)方法。
    發(fā)表于 07-13 16:02 ?6次下載

    AUTOSAR是什么?AUTOSAR軟件架構(gòu)簡介

    AUTOSAR的全稱是AUTomotive Open System Architecture,直譯為汽車開放系統(tǒng)架構(gòu)
    的頭像 發(fā)表于 07-08 17:26 ?1.2w次閱讀
    <b class='flag-5'>AUTOSAR</b>是什么?<b class='flag-5'>AUTOSAR</b>軟件<b class='flag-5'>架構(gòu)</b>簡介

    基于Tricore芯片的AUTOSAR架構(gòu)的多核啟動(dòng)

    隨著汽車ECU迅速的往域控制器方向發(fā)展,ECU要出來任務(wù)越來越多,單核CPU的負(fù)載越來越大,多核ECU勢在必行。AUTOSAR架構(gòu)OS支持多核處理,本系列文章將詳細(xì)介紹AUTOSAR
    的頭像 發(fā)表于 10-23 10:15 ?2877次閱讀
    基于Tricore芯片的<b class='flag-5'>AUTOSAR</b><b class='flag-5'>架構(gòu)</b><b class='flag-5'>下</b>的多核啟動(dòng)

    AUTOSAR架構(gòu)自適應(yīng)平臺(tái)

    AUTOSAR架構(gòu) AUTOSAR(AUTomotive Open System ARchitecture)是種開放的汽車電子系統(tǒng)架構(gòu),旨
    的頭像 發(fā)表于 10-27 15:23 ?1221次閱讀
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>架構(gòu)</b>自適應(yīng)平臺(tái)

    AUTOSAR架構(gòu),持續(xù)集成CI的最佳實(shí)踐

    集成(CI)流程。今天,我們就來探討一下基于AUTOSAR架構(gòu)的CI流程實(shí)踐,并通過對流程的詳細(xì)講解,展示其在實(shí)際開發(fā)中的重要性和優(yōu)勢。什么是AUTOSAR
    的頭像 發(fā)表于 10-24 08:06 ?358次閱讀
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>架構(gòu)</b><b class='flag-5'>下</b>,持續(xù)集成CI的最佳實(shí)踐