亚洲av成人精品日韩一区,97久久久精品综合88久久,玩弄japan白嫩少妇hd,亚洲av片不卡无码久久,玩弄人妻少妇500系列

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

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

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

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

832065824 ? 來(lái)源:汽車電子嵌入式 ? 2023-10-23 10:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

隨著汽車ECU迅速的往域控制器方向發(fā)展,ECU要出來(lái)任務(wù)越來(lái)越多,單核CPU的負(fù)載越來(lái)越大,多核ECU勢(shì)在必行。AUTOSAR架構(gòu)下OS支持多核處理,本系列文章將詳細(xì)介紹AUTOSAR架構(gòu)下的多核機(jī)制。本文介紹基于Tricore芯片的AUTOSAR架構(gòu)下的多核啟動(dòng)。

d02e2b7c-7148-11ee-939d-92fbcf53809c.png

縮略詞

簡(jiǎn)寫 全稱
UCB User Configuration Block
SSW Startup Software
BMHD Boot Mode Headers
SYSCON System Configuration Register

參考文檔

1. TriCoreTM TC1.6.2 core architecture manual

2. AURIXTC3XX_um_part1_v2.0.pdf

注:本公眾號(hào)文章中使用了一些第三方工具和文檔,若有侵權(quán),請(qǐng)聯(lián)系作者刪除!

正文

1. Tricore多核啟動(dòng)

背景知識(shí)1:UCB_BMHD0_ORIN.STAT的啟動(dòng)地址是配置Tricore啟動(dòng)后SSW從用戶程序的哪個(gè)地址開(kāi)始運(yùn)行,LD鏈接文件里面的入口地址EntryPoint是配置鏈接器把上電就執(zhí)行的用戶入口代碼地址鏈接到Entry Point,二者應(yīng)該是同一個(gè)地址,也就是說(shuō):UCB_BMHD0_ORIN.STAT的啟動(dòng)地址 要等于LD鏈接文件中的Entry Point啟動(dòng)地址。

參考文檔:

TC3xx芯片的UCB詳解

Note: 想arm-cotexM4芯片(e.g. S32K144),沒(méi)有SSW這個(gè)固化程序,一上電默認(rèn)就從0地址啟動(dòng),所以我們的LD文件需要把我們的Reset_Handler放到0地址處。

參考文檔:

S32K平臺(tái)學(xué)習(xí)(1)-S32K144啟動(dòng)流程分析

問(wèn)題1:Tricore是多核ECU,為什么上電后只有Core0在Runing狀態(tài)? Core1/2/…是在halt狀態(tài)?

如下三個(gè)圖所示,Tricore上電后,CPU0默認(rèn)進(jìn)入RUN狀態(tài),CPU1和CPU2默認(rèn)進(jìn)入halted狀態(tài)。

d042080e-7148-11ee-939d-92fbcf53809c.png

d049cb8e-7148-11ee-939d-92fbcf53809c.png

d056db12-7148-11ee-939d-92fbcf53809c.png

如下圖所示,Tricore芯片的CPU0(Core0)在上電(Reset)后默認(rèn)是進(jìn)入RUN狀態(tài)的,其他CPUx默認(rèn)是進(jìn)入HALT狀態(tài)的,這是芯片特性。

我們可以通過(guò)配置SYSCON寄存器的BHALT位=0b使得CPUx進(jìn)入RUN狀態(tài)。

d06c67f2-7148-11ee-939d-92fbcf53809c.png

d07d71fa-7148-11ee-939d-92fbcf53809c.png

:這是CPU芯片特性定義的。

背景知識(shí)2:我們可以在Core0啟動(dòng)后,通過(guò)配置SYSCON寄存器的BHALT位域來(lái)啟動(dòng)其他Slave核,在其實(shí)Slave核的同時(shí)應(yīng)該配置Slave Core的PC指針到我們想要Slave Core啟動(dòng)的地址處。

d09751ec-7148-11ee-939d-92fbcf53809c.png

2.OS多核啟動(dòng)時(shí)序

AUTOSAR架構(gòu)下, 多核系統(tǒng)分主核(Mater Core,通常也是BSWCore,Tricore芯片下的CPU0)和從核(Slave Core)。系統(tǒng)啟動(dòng)后MasterCore自動(dòng)啟動(dòng),Slave Core由Master Core啟動(dòng)OS后再通知啟動(dòng)。

圖一為Core0的啟動(dòng)時(shí)序,ECU上電后(或者Reset)只有Master Core會(huì)Run起來(lái),Master Core的啟動(dòng)代碼Startup()會(huì)跳轉(zhuǎn)到main()函數(shù),main函數(shù)調(diào)用EcuM_Init()開(kāi)始Master Core 0的StartSequence:

StartCore: 調(diào)用Os_Hal_CoreStart啟動(dòng)所有Slave Core.

Os_Hal_CoreStart: 配置芯片寄存器真正啟動(dòng)Slave Core(后文詳細(xì)分析).

StartOS: 啟動(dòng)OS.

Os_BarrierSynchronize: 開(kāi)始進(jìn)行核同步,也就是等待Slave Core運(yùn)行到這個(gè)地方,沒(méi)有完成核同步錢,Master Core會(huì)阻塞在這個(gè)地方(后文詳細(xì)分析OSBarriers機(jī)制)。

Rte_Start: 完成核同步后,OS調(diào)度進(jìn)入Core0的Init Task,InitTask中調(diào)用Rte_Start。

Note:Core0 的Init Task一般不會(huì)mapping任何的SWC的Runnable,這樣Init Task就需要手動(dòng)實(shí)現(xiàn)(不會(huì)由RTE自動(dòng)生成),在Init Task中就能手寫我們想要運(yùn)行的代碼,比如:e.g. 調(diào)用Rte_Start().

完成以上的任務(wù)后,Core0完成了StartSequence,開(kāi)始Cyclic Task的調(diào)度。

d09fad24-7148-11ee-939d-92fbcf53809c.png

Figure 1: OS Core0 start sequence.

Master Core調(diào)用Os_Hal_CoreStart()后,Slave Core就會(huì)立刻啟動(dòng),啟動(dòng)Sequence和Core0基本一樣,只不過(guò)沒(méi)有啟動(dòng)Slave的步驟。值得注意的是,Slave Core先調(diào)用Rte_Start(),而后再調(diào)用Os_BarrierSynchronize().

d0aae3c4-7148-11ee-939d-92fbcf53809c.png

Figure 2: OS Core1 start sequence.

3. 多核啟動(dòng)關(guān)鍵步驟分析

3.1 StartCore分析

StartCore()最后會(huì)調(diào)用Os_Hal_CoreStart()啟動(dòng)Slave Core, 代碼如下所示,最主要的就是

1.配置PC指針指向Slave Core的啟動(dòng)地址,這個(gè)啟動(dòng)地址可以在Davinci工具中配置(_start_core1)。

d0bfdf68-7148-11ee-939d-92fbcf53809c.png

d0def772-7148-11ee-939d-92fbcf53809c.png

2. 配置SYCON寄存器控制Slave Core從Halt狀態(tài)切換到Run狀態(tài)(SYSCON.BHALT位域?qū)懭?)。

OS_FUNC_ATTRIBUTE_DEFINITION(OS_LOCAL_INLINE void, OS_CODE, OS_ALWAYS_INLINE,
Os_Hal_CoreStart,
(
P2CONST(Os_Hal_CoreConfigType, AUTOMATIC, OS_CONST) Core
))
{
  /* #10 Write the foreign PC with the startup code symbol for core 1. */
  *((volatile uint32*)Core->ProgramCounterRegister) = (uint32)(Core->StartLabelAddress);                                
  /* #20 Reset the core. */
  *((volatile uint32*)Core->DBGSRRegister) = OS_HAL_DBGSR_START_CORE;                                                   
  /* #30 Release the core. */
  *((volatile uint32*)Core->SYSCON_CORECON_Register) &= ~OS_HAL_SYSCON_BHALT_MASK;                                               
}

3.2 Os_BarrierSynchronize分析

Os_BarrierSynchronize()就是OsBarriers的具體實(shí)現(xiàn),如果一個(gè)Barrier被多個(gè)Task引用了,那么只有引用這個(gè)Barrier的所有Task都調(diào)用了Os_BarrierSynchronize(Same BarrierID)后Task才會(huì)跳出阻塞狀態(tài),這樣就能實(shí)現(xiàn)核同步。

d0e3b398-7148-11ee-939d-92fbcf53809c.png

參考文檔:MICROSAR Classic OS Technical Reference.

問(wèn)題2:為什么要讓Slave Core的Rte_Start先調(diào)用了?

:Vector的推薦代碼這么寫的。

d0f9c1d8-7148-11ee-939d-92fbcf53809c.png

參考文檔:How to deal with MICROSAR Multi-Core Projects.

4. 總結(jié)

a. Tricore芯片Reset后只有Master Core0會(huì)進(jìn)入到Run狀態(tài),Slave Cores處于Halt狀態(tài)。

b. AUTSARMaster Core的OS調(diào)用StartCore()啟動(dòng)Slave Core.

c. StartCore()最終調(diào)用Os_Hal_CoreStart()配置Tricore芯片的PC指針和SYSCON寄存器啟動(dòng)Slave Core.

d. OS通過(guò)OsBarriers機(jī)制實(shí)現(xiàn)核同步。

審核編輯:湯梓紅

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

    關(guān)注

    459

    文章

    52505

    瀏覽量

    440765
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    379

    瀏覽量

    22659
  • ecu
    ecu
    +關(guān)注

    關(guān)注

    14

    文章

    934

    瀏覽量

    55820
  • TriCore
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    11936
  • 域控制器
    +關(guān)注

    關(guān)注

    0

    文章

    276

    瀏覽量

    3082

原文標(biāo)題:AUTOSAR架構(gòu)下多核啟動(dòng)

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于Tricore芯片AUTOSAR架構(gòu)多核Shutdown介紹

    當(dāng)ECU滿足休眠條件時(shí),根據(jù)ECU的硬件設(shè)計(jì)會(huì)走Sleep或者Shutdown的過(guò)程。
    的頭像 發(fā)表于 11-06 09:09 ?4172次閱讀
    基于<b class='flag-5'>Tricore</b><b class='flag-5'>芯片</b>的<b class='flag-5'>AUTOSAR</b><b class='flag-5'>架構(gòu)</b><b class='flag-5'>下</b>的<b class='flag-5'>多核</b>Shutdown介紹

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

    隨著汽車ECU迅速的往域控制器方向發(fā)展,ECU要處理的任務(wù)越來(lái)越多,單核CPU的負(fù)載越來(lái)越大,多核ECU勢(shì)在必行。AUTOSAR架構(gòu)OS支持多核
    的頭像 發(fā)表于 11-13 09:24 ?3705次閱讀
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>架構(gòu)</b><b class='flag-5'>下</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

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

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

    介紹在ARM64架構(gòu)啟動(dòng)多核的兩種方式

    1、ARM64的多核啟動(dòng)流程分析工作中遇到的多核 ARM CPU 越來(lái)越多,總結(jié)分享一些多核啟動(dòng)的知識(shí),希望能幫助更多小伙伴。在 ARM64
    發(fā)表于 06-13 18:23

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

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

    多核CPU的啟動(dòng)方式

    工作中遇到的多核 ARM CPU 越來(lái)越多,總結(jié)分享一些多核啟動(dòng)的知識(shí),希望能幫助更多小伙伴。 在 ARM64 架構(gòu)如果想要
    的頭像 發(fā)表于 06-22 10:04 ?2739次閱讀

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

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

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

    最近的項(xiàng)目負(fù)責(zé)網(wǎng)絡(luò)管理部分,網(wǎng)路喚醒和ECU系統(tǒng)的休眠關(guān)系緊密,對(duì)系統(tǒng)的喚醒源事件感覺(jué)理解的不是很透徹,今天就來(lái)理一理AUTOSAR架構(gòu)的喚醒源事件。
    的頭像 發(fā)表于 07-14 09:11 ?5662次閱讀
    理一理<b class='flag-5'>AUTOSAR</b><b class='flag-5'>架構(gòu)</b><b class='flag-5'>下</b>的喚醒源事件

    AutoSAR構(gòu)架以及在多核汽車MCU的運(yùn)行

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

    基于Tricore架構(gòu)的RTThread多核實(shí)現(xiàn)

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

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

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