<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Tricore芯片的AUTOSAR架構下的多核Shutdown介紹

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

正文

1. EcuM模塊中關于Multicore下電的流程概述

當ECU滿足休眠條件時,根據ECU的硬件設計會走Sleep或者Shutdown的過程。一般情況下,有SBC的ECU滿足休眠條件后走Shutdown流程下電;無SBC的ECU滿足休眠條件后走Sleep系統休眠的流程。

1.1 多核ECU走Sleep過程休眠

一般配置使用Flexible EcuM的項目在BswM模塊會自定義一個描述ECU狀態的狀態機,在ECU系統滿足休眠條件后會觸發Action調用EcuM_SelectShutdownTarget(ECUM_SHUTDOWN_TARGET_SLEEP),之后根據需求調用EcuM_GoHalt(深度休眠系統一般調用GoHalt)或者EcuM_GoPoll().

121ac23a-7c38-11ee-939d-92fbcf53809c.png

Figure 1: SLEEP Phase

12297d3e-7c38-11ee-939d-92fbcf53809c.png

12412632-7c38-11ee-939d-92fbcf53809c.png

Figure 2: Master Core GoSleep Sequence

Master Core的GoSleep Sequence中需要調用EcuM_EnableWakeupSource()這個Callout函數(需要用戶自定義)配置ECU休眠后的喚醒源。

125d19e6-7c38-11ee-939d-92fbcf53809c.png

Figure 3: Slave Core GoSleep Sequence.

Slave Core的GoSleep Sequence同樣需要調用EcuM_EnableWakeupSource()這個Callout函數。

Note: 個人理解Slave Core的GoSleep Sequence中調用EcuM_EnableWakeupSource()不需要做啥,因為喚醒的時候Master Core會調用StartCore喚醒Slave Core。

126e1d40-7c38-11ee-939d-92fbcf53809c.png

Figure 4: Master Core Halt Sequence

Master Core進入到Halt Sequence后會先等待Slave Core,多核完成同步后調用MCAL_MCU模塊提供的Mcu_SetMode()接口設置Master Core進入HALT深度休眠狀態。休眠后喚醒過程,本文暫不深入論述。

12821c00-7c38-11ee-939d-92fbcf53809c.png

Figure 5: Slave Core Halt Sequence.

Slave Core的Halt Sequence過程基本和Master Core的過程一樣。

Note:多核ECU走Sleep休眠過程沒有OS的參與。

單核ECU走Sleep過程請參考:AUTOSAR架構下RH850芯片深度休眠配置實踐-Conifig EcuM and BswM

1.2 多核ECU走Shutdown下電

在ECU系統滿足休眠條件后觸發Action調用EcuM_SelectShutdownTarget(ECUM_SHUTDOWN_TARGET_OFF),之后根據需求調用EcuM_GoDown().

129a834e-7c38-11ee-939d-92fbcf53809c.png

Figure 6: Shutdown Phase.

12b250a0-7c38-11ee-939d-92fbcf53809c.png

12c85724-7c38-11ee-939d-92fbcf53809c.png

Figure 7: Master Core OffPreOS Sequence

Master Core進入OffPreOS Sequence后最關鍵的就是調用ShutdownAllCores完成多核同步。

12e929c2-7c38-11ee-939d-92fbcf53809c.png

Figure 8: Master Core OffPostOS Sequence

Master Core完成多核同步后進入OffPostOS Sequence,調用EcuM_AL_SwitchOff()這個Callout函數完成ECU Shutdown Off。

Example:

VoidEcuM_AL_SwitchOff(void)
{
  Cdd_SBC_GotoSleep();//給MCU下電
};

12faf9ae-7c38-11ee-939d-92fbcf53809c.png

Figure 9: Slave Core OffPreOS Sequence.

因為Master Core調用EcuM_AL_SwitchOff ()后MCU已經下電了,Slave Core不用也來不及做啥操作了。

13152220-7c38-11ee-939d-92fbcf53809c.png

Figure 10: Slave Core OffPostOS Sequence.

2. OS模塊中關于多核Shutdown的描述

MasterCore滿足Shutdown Off條件后調用ShutdownAllCores(), 在ShutdownAllCores()中發送Signal給到Slave Core觸發Shutdown, 同時在ShutdownAllCores()中實現多核同步(Note: 后文實例代碼講解)。然后,所有的核都會àShutdowHook() àEcuM_Shutdown() àEcuM_AL_SwitchOff (Callout函數,中間調用用戶自定義的真正的Shutdown函數) àCdd_SBC_GotoSleep().

132d97ba-7c38-11ee-939d-92fbcf53809c.png

Figure 11: Example of a shutdown procedure.

13469c38-7c38-11ee-939d-92fbcf53809c.png

3. 多核下電的具體實現

3.1 MICROSAROS中X-Signal

135a398c-7c38-11ee-939d-92fbcf53809c.png

13725670-7c38-11ee-939d-92fbcf53809c.png

X-Signal用于MICROSAROS中跨核通信,具體通過MCU中未被使用的ISR中斷資源實現。

3.2 MICROSAR中Multicore Sleep

MICROSAR在Multicore上走SleepSequence時可以配置只有Master Core走Sleep,也可以選擇多Master andSlaveCore都走Sleep Sequence。如果走多核Sleep,則在BswM模塊中需要需要為每個Core配置ECU狀態機,滿足ECU Sleep條件后調用EcuM_GoHalt()/EcuM_GoPoll().

1389972c-7c38-11ee-939d-92fbcf53809c.png

多核同步在EcuM_GoHalt()或EcuM_GoPoll()中完成。

3.3 MICROSAR中Multicore Shutdown

MICROSAR在Multicore上走Shutdown Sequence時所有的核都得走Shutdown Sequence,那么在BswM模塊需要為每個Core配置ECU狀態機,滿足Shutdown Off條件后調用EcuM_GoDown().

13a6a7b8-7c38-11ee-939d-92fbcf53809c.png

EcuM_ShutdownOS這個Callout函數中調用OSAPIShutdowAllCores()完成多核同步。

3.4 ShutdownAllCores中的核同步

Action 1:Master Core中Os_ShutdownAllCores()調用Os_TrapCallShutdownAllCores().

Action 2:Master Core中Os_TrapCallShutdownAllCores()調用Os_Api_ShutdownAllCores().

Action 3:Master Core中Os_Api_ShutdownAllCores()調用Os_SystemShutdown().

Action 4:Master Core中Os_SystemShutdown()調用Os_XSigSend_ShutdownAllCores()給Slave Cores發送Shutdown信號。

13c1919a-7c38-11ee-939d-92fbcf53809c.png

Action 5:Slave Core接收到Signal后調用Os_CoreShutdowAllLocal().

13e3bdb0-7c38-11ee-939d-92fbcf53809c.png

Action 6:Slave Core中Os_CoreShutdowAllLocal()調用Os_CoreShutdown().

Action 7:Master Core和Slave Cores都調用Os_CoreShutdown(),通過OsBarriers機制完成多核同步,最后都調用ShutdownHook().

13f65452-7c38-11ee-939d-92fbcf53809c.png

OsBarriers機制參考:AUTOSAR架構下多核啟動

3.5 EcuM_GoHalt中的核同步

Master Core和Slave Core都調用EcuM_GoHalt(),然后:

MasterCore在EcuM_GoHalt()調用EcuM_EnterSleep().

SlaveCore在EcuM_GoHalt()調用EcuM_EnterSleepOnSlave().

14178a64-7c38-11ee-939d-92fbcf53809c.png

MasterCore中EcuM_EnterSleep()調用EcuM_ShutdownSynchronization().

MasterCore中EcuM_ShutdownSynchronization()通過一個do while()循環等待所有Slave Core是否到達Sleep狀態,EcuM_GetCoreStatusValue()就是獲取Slave Core狀態。

Master Core在調用EcuM_ShutdownSynchronization()之前會調用EcuM_SetCoreStatusValue()設置MasterCore進入到Sleep狀態。

143b0368-7c38-11ee-939d-92fbcf53809c.png

Slave Core中EcuM_EnterSleepOnSlave()調用EcuM_SetCoreStatusValue()設置Slave Cores進入到Sleep狀態,最后調用EcuM_McuSetMode()進入深度休眠Halt.

1470b7ce-7c38-11ee-939d-92fbcf53809c.png

EcuM_SetCoreStatusValue(CoreID)和EcuM_GetCoreStatusValue(CoreID, CORE_STATE)其實就是在設置和訪問三個標識核狀態的全局變量。

149537ac-7c38-11ee-939d-92fbcf53809c.png

Note: 標識三個核狀態的全局變量應該鏈接在三個核都能訪問的共享RAM里面,保證三個核都能訪問的到。

4. 總結

問題 1: ECU走Sleep過程休眠過程如何實現多核同步?

:Multicore ECU走Sleep過程通過EcuM_GoHalt()/EcuM_GoPoll()實現核同步,具體參考3.5章節。

問題 2:ECU走Shutdown Off過程下電如何實現多核同步?

:Multicore ECU走Shutdown過程下電通過ShutdownAllCores()實現核同步,具體參考3.4章節。







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • AUTOSAR
    +關注

    關注

    9

    文章

    333

    瀏覽量

    21224
  • SBC
    SBC
    +關注

    關注

    0

    文章

    66

    瀏覽量

    19037
  • ecu
    ecu
    +關注

    關注

    14

    文章

    828

    瀏覽量

    53967
  • 狀態機
    +關注

    關注

    2

    文章

    486

    瀏覽量

    27234
  • MCU芯片
    +關注

    關注

    3

    文章

    229

    瀏覽量

    11163

原文標題:AUTOSAR架構下多核Shutdown

文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AUTOSAR架構下的多核通信介紹

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

    AUTOSAR分層架構

    AUTOSAR分層架構
    發表于 09-26 11:12

    介紹芯片命名系統資源最小系統的搭建原理圖

    目錄寫在前面芯片資源介紹芯片命名系統資源最小系統的搭建原理圖PCB寫在前面根據今年比賽規則的要求,雙車組和信標組需要使用Infineon公司的Tricore
    發表于 07-21 09:13

    功能安全---AUTOSAR架構深度解析 精選資料分享

    AUTOSAR架構深度解析本文轉載于:AUTOSAR架構深度解析AUTOSAR的分層式設計,用于支持完整的軟件和硬件模塊的獨立性(Indep
    發表于 07-23 08:34

    AUTOSAR架構深度解析 精選資料推薦

    AUTOSAR架構深度解析本文轉載于:AUTOSAR架構深度解析目錄AUTOSAR架構深度解析
    發表于 07-28 07:40

    AUTOSAR架構深度解析 精選資料分享

    AUTOSAR架構深度解析本文轉載于:AUTOSAR架構深度解析AUTOSAR的分層式設計,用于支持完整的軟件和硬件模塊的獨立性(Indep
    發表于 07-28 07:02

    關于AUTOSAR架構的知識點看完你就懂了

    關于AUTOSAR架構的知識點看完你就懂了
    發表于 10-18 07:41

    如何在Tricore上移植μC/OS-III

    本文是《在Tricore上移植μC/OS-III》系列文章的第一篇,先簡單介紹整個項目。Tricore是英飛凌旗下的一款單片機內核,目前汽車電子領域常用的TC2XX和TC3XX等系列
    發表于 01-27 08:17

    介紹AUTOSAR支持的四種功能安全機制

    內存分區用于解決不同軟件組件之間的互相干擾,造成對內存存儲的數據段或代碼段的篡改,需要限制對內存和內存映射的硬件外設的訪問。在AUTOSAR架構,分區是以OS-Application為對象劃分
    發表于 06-10 17:33

    AUTOSAR分層架構介紹及SmartSAR studio使用總結

    AUTOSAR分層架構
    發表于 03-28 16:44 ?9次下載

    一種AUTOSAR軟件架構中RTE的實現方法

    介紹了一種AUTOSAR軟件架構中RTE的實現方法。
    發表于 07-13 16:02 ?6次下載

    AUTOSAR是什么?AUTOSAR軟件架構簡介

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

    AutoSAR構架以及在多核汽車MCU的運行

    小二之前只開發過異構雙核的芯片,各跑各的軟件(比如各自運行一套FreeRTOS,反正組件裁剪下也不大),針對類似Stellar,AURIX這樣的同構多核的軟件不了解; 比如針對AutoSAR
    的頭像 發表于 07-24 10:57 ?1732次閱讀
    <b class='flag-5'>AutoSAR</b>構架以及在<b class='flag-5'>多核</b>汽車MCU的運行

    基于Tricore架構的RTThread多核實現

    在《基于Hightec+TC375TP的RT-Thread移植詳解 》一文中,基于Tricore實現了單核RTThread的移植。最近,花了些時間完成遺留的任務:基于Tricore多核移植。目前
    的頭像 發表于 09-12 18:40 ?570次閱讀

    基于Tricore芯片AUTOSAR架構下的多核啟動

    隨著汽車ECU迅速的往域控制器方向發展,ECU要出來任務越來越多,單核CPU的負載越來越大,多核ECU勢在必行。AUTOSAR架構下OS支持多核處理,本系列文章將詳細
    的頭像 發表于 10-23 10:15 ?1422次閱讀
    基于<b class='flag-5'>Tricore</b><b class='flag-5'>芯片</b>的<b class='flag-5'>AUTOSAR</b><b class='flag-5'>架構</b>下的<b class='flag-5'>多核</b>啟動
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>