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

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

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

什么是多核SoC?基于ARM的多核SoC的啟動方法介紹

jf_EksNQtU6 ? 來源:車端 ? 作者:Amitav ? 2023-04-04 10:14 ? 次閱讀

介紹 :

引導(dǎo)過程是任何 SoC 在復(fù)位解除后進(jìn)行各種設(shè)備配置(調(diào)整位、設(shè)備安全設(shè)置、引導(dǎo)向量位置)和內(nèi)存初始化(如 FLASH/SRAM/GRAM)的過程。在引導(dǎo)過程中,各種模塊/外設(shè)(如時(shí)鐘控制器或安全處理模塊和其他主/從)根據(jù) SoC 架構(gòu)和客戶應(yīng)用進(jìn)行初始化。在多核 SoC 中,首先主要核心(也稱為引導(dǎo)核心)在引導(dǎo)過程中啟動,然后輔助核心由軟件啟用。

引導(dǎo)過程從上電復(fù)位 (POR)開始,硬件復(fù)位邏輯強(qiáng)制 ARM 內(nèi)核(Cortex M 系列)從片上引導(dǎo) ROM 開始執(zhí)行。引導(dǎo) ROM 代碼使用給定的引導(dǎo)選擇選項(xiàng)以及各種 FUSE/straps 和 GPIO 設(shè)置的狀態(tài)來確定 SOC 的引導(dǎo)流程行為。

什么是多核 SoC:

多核 SoC 有多個(gè)處理器,每個(gè)處理器都有自己的特定應(yīng)用。

網(wǎng)絡(luò)/汽車應(yīng)用等復(fù)雜 SoC 中,大多數(shù)行業(yè) SoC 將主內(nèi)核(啟動內(nèi)核)、應(yīng)用程序/系統(tǒng)內(nèi)核、網(wǎng)絡(luò)內(nèi)核集成在單個(gè)芯片上,以處理來自不同外設(shè)(主/從)的各種數(shù)據(jù)。主內(nèi)核是任何處理啟動和最大功能的 SoC 的核心,但對于大流量數(shù)據(jù)(以太網(wǎng)/TDM)和高頻(CSI-2,QSPI)應(yīng)用程序,我們需要有特定的應(yīng)用程序內(nèi)核,如 CORTEX-A 內(nèi)核來處理數(shù)據(jù).

27e88dd4-d20d-11ed-bfe3-dac502259ad0.png

圖 1:多核 SoC 的架構(gòu)

多核 SoC 的引導(dǎo)流程:

當(dāng)設(shè)備獲得 POR 時(shí),主內(nèi)核跳轉(zhuǎn)到復(fù)位向量位置。復(fù)位向量是映射到 ROM 起始地址(也稱為引導(dǎo) ROM)的位置,內(nèi)核將在 POR 后從此處開始執(zhí)行。ARM 處理器(如 Cortex-M 系列)使用位于 0x00000000 的復(fù)位向量。該決定是通過配置輸入信號做出的,因此在不同的 SoC 之間可能會有所不同。

一旦主核心(如 ARM Coretx-M)脫離復(fù)位,它將從內(nèi)存地址位置 0x00000000 開始執(zhí)行。主內(nèi)核加載程序計(jì)數(shù)器并從地址 0xSP 開始執(zhí)行(主內(nèi)核堆棧指針,在 0xSP 位置的 ROM 內(nèi)部,它將加載堆棧指針),這指示內(nèi)核加載其重置處理程序(堆棧指針,向量表)和讀取處理器Start Address(PSA)獲取應(yīng)用程序引導(dǎo)地址并跳轉(zhuǎn)到該位置。

PSA中,hex 文件或映像由引導(dǎo)加載程序加載。該地址可以是 SRAM/GRAM 或 FLASH。

CORE 將執(zhí)行來自 PSA 的 Image/.hex,它可能會按照引導(dǎo)加載程序的指示加載到 SRAM/GRAM 或 FLASH。

將 Image/.hex 加載到內(nèi)存(FLASH/SRAM/GRAM)中是由引導(dǎo)加載程序完成的。該加載程序可以內(nèi)置在 BOOT ROM 中,也可以是外部加載程序。

在 SoC 驗(yàn)證中,hex 文件/圖像是由 .c 文件(模式)通過編譯器 -> 匯編程序 -> 鏈接器 ->.ELF->.HEX 生成的。

280e5078-d20d-11ed-bfe3-dac502259ad0.png

圖 2:多核 SoC 中主核的啟動順序

主內(nèi)核已經(jīng)啟動并準(zhǔn)備好移除其余部分以重置其他外設(shè)以及輔助內(nèi)核,因?yàn)槟J(rèn)情況下輔助內(nèi)核被禁用,由軟件啟用。

一旦軟件決定啟用輔助內(nèi)核,相應(yīng)的寄存器(取決于 SoC 架構(gòu),啟用輔助內(nèi)核和時(shí)鐘控制寄存器)需要使用主內(nèi)核進(jìn)行編程。一旦啟用輔助內(nèi)核,這將開始從復(fù)位中獲取數(shù)據(jù)向量位置(這與主核的復(fù)位向量位置不同,主核的復(fù)位向量位置是 0x00000000,而次級核的復(fù)位向量位置可以是 0x00000004)。

實(shí)際上,輔助核心也從 0x00000000 啟動,并且通過使用虛擬化概念(從 0x00000000 到 0x00000004 的內(nèi)存映射)或總線探測概念,它必須將 0x00000000 地址映射到 0x00000004 并從該地址獲取第一條指令。

現(xiàn)在輔助內(nèi)核加載程序計(jì)數(shù)器并從地址 0xSP(輔助內(nèi)核堆棧指針)開始執(zhí)行,它指示內(nèi)核加載其重置處理程序(堆棧指針、向量表)并讀取 PSA 以獲取應(yīng)用程序引導(dǎo)地址并跳轉(zhuǎn)到該位置。

28368412-d20d-11ed-bfe3-dac502259ad0.png

圖 3:多核 SoC 中輔助內(nèi)核的啟動順序

2859d7d2-d20d-11ed-bfe3-dac502259ad0.png

圖 4:啟用多核

初級核心和次級核心有單獨(dú)的 Image/.hex。Image/.hex 應(yīng)該為所有核心存儲不同的內(nèi)存位置(即 GRAM/SRAM/FLASH)。這表明 PSA 對于所有內(nèi)核都是不同的。此設(shè)置是 SoC 架構(gòu)的一部分,由所有內(nèi)核的鏈接器文件決定。例如,告訴 Image/.hex 文件地址和起始地址的鏈接器文件將是 PSA 。

例如:根據(jù)鏈接器文件生成的圖像/十六進(jìn)制開始和結(jié)束地址。

CORE1-0X3E800000-0X3E80FFFF
CORE2-0X3E810000-0X3E81FFFF
CORE3- …..

什么是引導(dǎo)加載程序:

根據(jù) SoC 架構(gòu)和實(shí)現(xiàn),引導(dǎo)加載程序可以是引導(dǎo) ROM 的一部分或在引導(dǎo) ROM 之外。引導(dǎo)加載程序是根據(jù) Fuse/straps 配置將圖像/十六進(jìn)制加載到內(nèi)存中的程序。Boot loader 是一個(gè)程序,它具有所有外設(shè)和引導(dǎo)接口的數(shù)據(jù)結(jié)構(gòu)。引導(dǎo)加載程序是高度特定于內(nèi)核和電路板的。引導(dǎo)加載程序?qū)⒃?POR 到 SoC 時(shí)執(zhí)行。

Bootrom的職責(zé):

執(zhí)行必要的初始化,包括對 PLL、時(shí)鐘、堆棧、中斷設(shè)置、看門狗定時(shí)器等進(jìn)行編程。

啟用不同的一級緩存。

根據(jù) Fuses/Straps 引腳值配置 I/O 元件和引腳多路復(fù)用。

將閃存控制器初始化為默認(rèn)設(shè)置。

從閃存(NOR、NAND)、外部存儲器、SD/MMC、USBUART 加載用戶代碼。引導(dǎo)順序和選項(xiàng)由保險(xiǎn)絲/帶針設(shè)置。

ROM 的特點(diǎn)包括:

支持從各種啟動設(shè)備啟動

串行下載器支持(USB、Flex CAN 和 UART 等)

主引導(dǎo)數(shù)據(jù)(初始接口的配置數(shù)據(jù))

從低功耗模式喚醒

喚醒二級核心

Boot ROM 可以支持以下引導(dǎo)設(shè)備:

閃光

標(biāo)清/多媒體卡

QuadSPI

串行 ROM 設(shè)備(通過 I2C 和 SPI 接口)

PCI/USB/UART等

重置向量表或重置處理程序:

處理器復(fù)位后,它將在異常向量表中的復(fù)位向量位置(地址 0x00000000)開始執(zhí)行。

重置處理程序代碼滿足以下目的。

在多核架構(gòu)中,將所有次核置于睡眠/禁用狀態(tài)

異常向量的初始化

內(nèi)存/緩存/TLB 初始化

堆棧和處理器模式寄存器初始化

對 IO 設(shè)備執(zhí)行必要的初始化并啟用中斷

ARM M 系列內(nèi)核的典型向量表:

28709558-d20d-11ed-bfe3-dac502259ad0.png

引導(dǎo)順序中的挑戰(zhàn)和問題:

以下是與引導(dǎo)順序相關(guān)的主要挑戰(zhàn)和問題。

1. 核心之間的同步:在 SoC 設(shè)計(jì)中是否有啟動時(shí)存在多少個(gè)核心的信息?哪個(gè)核心是初級核心?

如果所有內(nèi)核同時(shí)退出復(fù)位狀態(tài),它們通常都從同一個(gè)復(fù)位向量開始執(zhí)行。然后引導(dǎo)代碼讀取集群 ID 以確定哪個(gè)核心是主要核心。主要核心執(zhí)行初始化,然后向次要核心發(fā)出一切準(zhǔn)備就緒的信號。另一種方法是在主核進(jìn)行初始化時(shí)將輔助核保持在復(fù)位狀態(tài)。該方法需要硬件支持來協(xié)調(diào)復(fù)位。CP15: MPIDR Multiprocessor Affinity Register 提供了多核系統(tǒng)中的識別機(jī)制。

2. 堆棧設(shè)置問題:通常,在單核系統(tǒng)中,啟動堆棧被初始化以跳轉(zhuǎn)到BootROM。稍后,系統(tǒng)堆棧被初始化,整個(gè)系統(tǒng)都使用該堆棧。當(dāng)支持多核系統(tǒng)時(shí),一種方法可能是讓每個(gè)內(nèi)核重復(fù)臨時(shí)和系統(tǒng)堆棧操作。然而,更好的方法是將一個(gè)主內(nèi)核設(shè)置為所有內(nèi)核的系統(tǒng)堆棧。這將減少輔助核心上的初始化代碼。

3. 在地址零或復(fù)位向量處啟動一個(gè)帶有未初始化內(nèi)存的處理器:

在復(fù)位時(shí),處理器總是從地址為零的復(fù)位向量位置啟動。

對于地址為零的未初始化內(nèi)存(例如,未編程的閃存或未初始化的 GRAM/SRAM),處理器將從地址 0x0 讀取虛假的初始主堆棧指針值,并從該地址讀取虛假的代碼入口點(diǎn),可能包含非法指令集狀態(tài)位 [0] 中的說明符(ESPR.T 位)。

處理器可能會立即鎖定,或者可能會執(zhí)行一些虛假的操作碼,但在后一種情況下,鎖定仍然是可能的結(jié)果。

4. 多個(gè)內(nèi)核在同一復(fù)位向量共享同一引導(dǎo) ROM:

多個(gè)核心在地址 0x0 處共享相同的引導(dǎo) ROM 并不常見,因?yàn)檫@意味著多個(gè)核心將使用相同的初始主堆棧指針 (MSP) 地址啟動,這將導(dǎo)致堆棧損壞(包括 NMI 或任何故障異常)。

在 SoC 的啟動序列中處理挑戰(zhàn)的戰(zhàn)略方法:

為克服上述問題,必須相應(yīng)地更新多核 SoC 中所有內(nèi)核的鏈接器文件。每個(gè)內(nèi)核都有單獨(dú)的鏈接器。典型的鏈接器文件包含有關(guān) Image/hex 中地址的信息,即要生成的 Hex/image 文件的起始地址和范圍,還有堆棧相關(guān)信息。鏈接器文件設(shè)置取決于 SoC 架構(gòu)。

ARM 鏈接器文件如下所示:

289364f2-d20d-11ed-bfe3-dac502259ad0.png

必須控制初級核心和次級核心的初始化順序,以免堆棧損壞。因此,首先必須初始化主要核心(保持其他核心處于重置/暫停狀態(tài)),而不是其他核心。

結(jié)論:

VLSI 芯片設(shè)計(jì)行業(yè)正朝著集成多個(gè)內(nèi)核的單芯片中越來越復(fù)雜的設(shè)計(jì)邁進(jìn)。多核啟動順序有助于理解,SoC 的實(shí)際工作方式以及 POR 斷言后 SoC 喚醒的順序是什么。在此paper,我們已經(jīng)討論了基于ARM的SoC中的多核啟動順序以及相關(guān)描述

引導(dǎo) ROM、引導(dǎo)加載程序、使用鏈接器文件生成圖像/十六進(jìn)制、引導(dǎo)選項(xiàng)(從 SPI/SDIO/PCI 等不同設(shè)備引導(dǎo))。還談到了從各種存儲器(SRAM/GRAM/FLASH)形成的多核引導(dǎo)。除此之外,還討論了在初始級別的多核引導(dǎo)期間面臨的挑戰(zhàn)和面臨的問題以及處理這些問題/挑戰(zhà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)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    18926

    瀏覽量

    227215
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    8967

    瀏覽量

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

    關(guān)注

    112

    文章

    15882

    瀏覽量

    175353
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1598

    瀏覽量

    147336
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4021

    瀏覽量

    217021

原文標(biāo)題:基于ARM的多核SoC的啟動方法

文章出處:【微信號:談思實(shí)驗(yàn)室,微信公眾號:談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    面向多核DSP及SoC的平臺軟件解決方案

    本文介紹了Enea針對多核DSP/SoC的平臺軟件解決方案。詳細(xì)介紹了方案的組成,包括面向針對多核DSP/
    發(fā)表于 06-14 13:50 ?2291次閱讀
    面向<b class='flag-5'>多核</b>DSP及<b class='flag-5'>SoC</b>的平臺軟件解決方案

    以全新的多核SoC架構(gòu)進(jìn)行LTE開發(fā)

    層面形成極大的壓力。為了滿足這些需求,TI開發(fā)出全新的SoC架構(gòu),其中許多內(nèi)建的組件可滿足LTE蜂窩基站的需求(見圖1)。[/url]圖1:德州儀器的多核SoC架構(gòu)。TI全新的架構(gòu)采用先進(jìn)的DSP核技術(shù)
    發(fā)表于 07-14 14:40

    AM5K2E0x 多核 ARM KeyStone II 片上系統(tǒng) (SoC)

    AM5K2E0x 多核 ARM KeyStone II 片上系統(tǒng) (SoC)
    發(fā)表于 07-06 15:25

    消費(fèi)電子助力SoC發(fā)展,多核技術(shù)是焦點(diǎn)

    多核SoC設(shè)計(jì)的發(fā)展潮流。 一直以來,通用CPU+硬件邏輯(硬件加速器或協(xié)處理器)是嵌入式SoC的主流架構(gòu)。通用CPU來自ARM和MIPS這類通用內(nèi)核授權(quán)商,而硬件邏輯由
    發(fā)表于 06-21 06:19

    創(chuàng)龍帶您解密TI、Xilinx異構(gòu)多核SoC處理器核間通訊

    1.什么是異構(gòu)多核SoC處理器顧名思義,單顆芯片內(nèi)集成多個(gè)不同架構(gòu)處理單元核心的SoC處理器,我們稱之為異構(gòu)多核SoC處理器,比如:TI的O
    發(fā)表于 09-08 09:39

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

    1、ARM64的多核啟動流程分析工作中遇到的多核 ARM CPU 越來越多,總結(jié)分享一些多核
    發(fā)表于 06-13 18:23

    SOC多核啟動流程詳解

    的則是你的SOC啟動的時(shí)候,所有core都上電了。2、啟動流程我們就假定 reset地址是可編程的、SOC啟動的時(shí)候只
    發(fā)表于 02-21 15:11

    TI推出多核SoC顯著簡化通信基礎(chǔ)局端設(shè)備的設(shè)計(jì)

    TI推出多核SoC顯著簡化通信基礎(chǔ)局端設(shè)備的設(shè)計(jì) 日前,德州儀器 (TI) 宣布推出一款基于 TI 多核數(shù)字信號處理器 (DSP) 的新型片上系統(tǒng) (SoC) 架構(gòu),該架構(gòu)在業(yè)界性能
    發(fā)表于 02-23 16:46 ?673次閱讀

    TI推出最新多核SoC架構(gòu),實(shí)現(xiàn)5倍性能提升

    TI推出最新多核SoC架構(gòu),實(shí)現(xiàn)5倍性能提升 日前,德州儀器(TI)宣布推出一款基于 TI 多核數(shù)字信號處理器(DSP)的新型片上系統(tǒng)(SoC)架構(gòu),該架構(gòu)在業(yè)界性能最高的CPU中同
    發(fā)表于 02-26 08:38 ?609次閱讀

    一種基于DSP的多核SOC中斷擴(kuò)展設(shè)計(jì)與實(shí)現(xiàn)

    一種基于DSP的多核SOC中斷擴(kuò)展設(shè)計(jì)與實(shí)現(xiàn)_張躍玲
    發(fā)表于 01-07 21:08 ?0次下載

    基于TI最新多核DSP SoC架構(gòu)的解析

    。 TI多核及媒體基礎(chǔ)架構(gòu)DSP業(yè)務(wù)部全球業(yè)務(wù)經(jīng)理Ramesh Kumar表示,TI的多核SoC產(chǎn)品正是針對市場對上述能力的不斷需求而推出的。TI了解市場正在變化,因此推出了這一多核
    發(fā)表于 10-24 11:41 ?2次下載
    基于TI最新<b class='flag-5'>多核</b>DSP <b class='flag-5'>SoC</b>架構(gòu)的解析

    KeyStone多核SoC工具套件

    過去,實(shí)施和部署多核片上系統(tǒng) (SoC) 器件的一大挑戰(zhàn)一直都是為編程和調(diào)試這些平臺提供適當(dāng)?shù)墓ぞ摺i_發(fā)人員要充分發(fā)揮多核性能優(yōu)勢,就必須進(jìn)行高效率分區(qū),并在這些核上運(yùn)行高質(zhì)量軟件。復(fù)雜多核
    發(fā)表于 10-27 13:20 ?0次下載
    KeyStone<b class='flag-5'>多核</b><b class='flag-5'>SoC</b>工具套件

    66AK2L06多核DSP+ARM KeyStone II片上系統(tǒng)(SoC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《66AK2L06多核DSP+ARM KeyStone II片上系統(tǒng)(SoC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-07 11:24 ?0次下載
    66AK2L06<b class='flag-5'>多核</b>DSP+<b class='flag-5'>ARM</b> KeyStone II片上系統(tǒng)(<b class='flag-5'>SoC</b>)數(shù)據(jù)表

    66AK2Hxx多核DSP+ARM? KeyStone II片上系統(tǒng)(SoC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《66AK2Hxx多核DSP+ARM? KeyStone II片上系統(tǒng)(SoC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-07 09:34 ?0次下載
    66AK2Hxx<b class='flag-5'>多核</b>DSP+<b class='flag-5'>ARM</b>? KeyStone II片上系統(tǒng)(<b class='flag-5'>SoC</b>)數(shù)據(jù)表

    66AK2E0x多核DSP+ARM KeyStone II片上系統(tǒng)(SoC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《66AK2E0x多核DSP+ARM KeyStone II片上系統(tǒng)(SoC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-07 09:13 ?0次下載
    66AK2E0x<b class='flag-5'>多核</b>DSP+<b class='flag-5'>ARM</b> KeyStone II片上系統(tǒng)(<b class='flag-5'>SoC</b>)數(shù)據(jù)表