0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是多核SoC?基于ARM的多核SoC的启动方法介绍

jf_EksNQtU6 来源:车端 作者:Amitav 2023-04-04 10:14 次阅读

介绍 :

引导过程是任何 SoC 在复位解除后进行各种设备配置(调整位、设备安全设置、引导向量位置)和内存初始化(如 FLASH/SRAM/GRAM)的过程。在引导过程中,各种模块/外设(如时钟控制器或安全处理模块和其他主/从)根据 SoC 架构和客户应用进行初始化。在多核 SoC 中,首先主要核心(也称为引导核心)在引导过程中启动,然后辅助核心由软件启用。

引导过程从上电复位 (POR)开始,硬件复位逻辑强制 ARM 内核(Cortex M 系列)从片上引导 ROM 开始执行。引导 ROM 代码使用给定的引导选择选项以及各种 FUSE/straps 和 GPIO 设置的状态来确定 SOC 的引导流程行为。

什么是多核 SoC:

多核 SoC 有多个处理器,每个处理器都有自己的特定应用。

网络/汽车应用等复杂 SoC 中,大多数行业 SoC 将主内核(启动内核)、应用程序/系统内核、网络内核集成在单个芯片上,以处理来自不同外设(主/从)的各种数据。主内核是任何处理启动和最大功能的 SoC 的核心,但对于大流量数据(以太网/TDM)和高频(CSI-2,QSPI)应用程序,我们需要有特定的应用程序内核,如 CORTEX-A 内核来处理数据.

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

图 1:多核 SoC 的架构

多核 SoC 的引导流程:

当设备获得 POR 时,主内核跳转到复位向量位置。复位向量是映射到 ROM 起始地址(也称为引导 ROM)的位置,内核将在 POR 后从此处开始执行。ARM 处理器(如 Cortex-M 系列)使用位于 0x00000000 的复位向量。该决定是通过配置输入信号做出的,因此在不同的 SoC 之间可能会有所不同。

一旦主核心(如 ARM Coretx-M)脱离复位,它将从内存地址位置 0x00000000 开始执行。主内核加载程序计数器并从地址 0xSP 开始执行(主内核堆栈指针,在 0xSP 位置的 ROM 内部,它将加载堆栈指针),这指示内核加载其重置处理程序(堆栈指针,向量表)和读取处理器Start Address(PSA)获取应用程序引导地址并跳转到该位置。

PSA中,hex 文件或映像由引导加载程序加载。该地址可以是 SRAM/GRAM 或 FLASH。

CORE 将执行来自 PSA 的 Image/.hex,它可能会按照引导加载程序的指示加载到 SRAM/GRAM 或 FLASH。

将 Image/.hex 加载到内存(FLASH/SRAM/GRAM)中是由引导加载程序完成的。该加载程序可以内置在 BOOT ROM 中,也可以是外部加载程序。

在 SoC 验证中,hex 文件/图像是由 .c 文件(模式)通过编译器 -> 汇编程序 -> 链接器 ->.ELF->.HEX 生成的。

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

图 2:多核 SoC 中主核的启动顺序

主内核已经启动并准备好移除其余部分以重置其他外设以及辅助内核,因为默认情况下辅助内核被禁用,由软件启用。

一旦软件决定启用辅助内核,相应的寄存器(取决于 SoC 架构,启用辅助内核和时钟控制寄存器)需要使用主内核进行编程。一旦启用辅助内核,这将开始从复位中获取数据向量位置(这与主核的复位向量位置不同,主核的复位向量位置是 0x00000000,而次级核的复位向量位置可以是 0x00000004)。

实际上,辅助核心也从 0x00000000 启动,并且通过使用虚拟化概念(从 0x00000000 到 0x00000004 的内存映射)或总线探测概念,它必须将 0x00000000 地址映射到 0x00000004 并从该地址获取第一条指令。

现在辅助内核加载程序计数器并从地址 0xSP(辅助内核堆栈指针)开始执行,它指示内核加载其重置处理程序(堆栈指针、向量表)并读取 PSA 以获取应用程序引导地址并跳转到该位置。

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

图 3:多核 SoC 中辅助内核的启动顺序

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

图 4:启用多核

初级核心和次级核心有单独的 Image/.hex。Image/.hex 应该为所有核心存储不同的内存位置(即 GRAM/SRAM/FLASH)。这表明 PSA 对于所有内核都是不同的。此设置是 SoC 架构的一部分,由所有内核的链接器文件决定。例如,告诉 Image/.hex 文件地址和起始地址的链接器文件将是 PSA 。

例如:根据链接器文件生成的图像/十六进制开始和结束地址。

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

什么是引导加载程序:

根据 SoC 架构和实现,引导加载程序可以是引导 ROM 的一部分或在引导 ROM 之外。引导加载程序是根据 Fuse/straps 配置将图像/十六进制加载到内存中的程序。Boot loader 是一个程序,它具有所有外设和引导接口的数据结构。引导加载程序是高度特定于内核和电路板的。引导加载程序将在 POR 到 SoC 时执行。

Bootrom的职责:

执行必要的初始化,包括对 PLL、时钟、堆栈、中断设置、看门狗定时器等进行编程。

启用不同的一级缓存。

根据 Fuses/Straps 引脚值配置 I/O 元件和引脚多路复用。

将闪存控制器初始化为默认设置。

从闪存(NOR、NAND)、外部存储器、SD/MMC、USBUART 加载用户代码。引导顺序和选项由保险丝/带针设置。

ROM 的特点包括:

支持从各种启动设备启动

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

主引导数据(初始接口的配置数据)

从低功耗模式唤醒

唤醒二级核心

Boot ROM 可以支持以下引导设备:

闪光

标清/多媒体卡

QuadSPI

串行 ROM 设备(通过 I2C 和 SPI 接口)

PCI/USB/UART等

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

处理器复位后,它将在异常向量表中的复位向量位置(地址 0x00000000)开始执行。

重置处理程序代码满足以下目的。

在多核架构中,将所有次核置于睡眠/禁用状态

异常向量的初始化

内存/缓存/TLB 初始化

堆栈和处理器模式寄存器初始化

对 IO 设备执行必要的初始化并启用中断

ARM M 系列内核的典型向量表:

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

引导顺序中的挑战和问题:

以下是与引导顺序相关的主要挑战和问题。

1. 核心之间的同步:在 SoC 设计中是否有启动时存在多少个核心的信息?哪个核心是初级核心?

如果所有内核同时退出复位状态,它们通常都从同一个复位向量开始执行。然后引导代码读取集群 ID 以确定哪个核心是主要核心。主要核心执行初始化,然后向次要核心发出一切准备就绪的信号。另一种方法是在主核进行初始化时将辅助核保持在复位状态。该方法需要硬件支持来协调复位。CP15: MPIDR Multiprocessor Affinity Register 提供了多核系统中的识别机制。

2. 堆栈设置问题:通常,在单核系统中,启动堆栈被初始化以跳转到BootROM。稍后,系统堆栈被初始化,整个系统都使用该堆栈。当支持多核系统时,一种方法可能是让每个内核重复临时和系统堆栈操作。然而,更好的方法是将一个主内核设置为所有内核的系统堆栈。这将减少辅助核心上的初始化代码。

3. 在地址零或复位向量处启动一个带有未初始化内存的处理器:

在复位时,处理器总是从地址为零的复位向量位置启动。

对于地址为零的未初始化内存(例如,未编程的闪存或未初始化的 GRAM/SRAM),处理器将从地址 0x0 读取虚假的初始主堆栈指针值,并从该地址读取虚假的代码入口点,可能包含非法指令集状态位 [0] 中的说明符(ESPR.T 位)。

处理器可能会立即锁定,或者可能会执行一些虚假的操作码,但在后一种情况下,锁定仍然是可能的结果。

4. 多个内核在同一复位向量共享同一引导 ROM:

多个核心在地址 0x0 处共享相同的引导 ROM 并不常见,因为这意味着多个核心将使用相同的初始主堆栈指针 (MSP) 地址启动,这将导致堆栈损坏(包括 NMI 或任何故障异常)。

在 SoC 的启动序列中处理挑战的战略方法:

为克服上述问题,必须相应地更新多核 SoC 中所有内核的链接器文件。每个内核都有单独的链接器。典型的链接器文件包含有关 Image/hex 中地址的信息,即要生成的 Hex/image 文件的起始地址和范围,还有堆栈相关信息。链接器文件设置取决于 SoC 架构。

ARM 链接器文件如下所示:

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

必须控制初级核心和次级核心的初始化顺序,以免堆栈损坏。因此,首先必须初始化主要核心(保持其他核心处于重置/暂停状态),而不是其他核心。

结论:

VLSI 芯片设计行业正朝着集成多个内核的单芯片中越来越复杂的设计迈进。多核启动顺序有助于理解,SoC 的实际工作方式以及 POR 断言后 SoC 唤醒的顺序是什么。在此paper,我们已经讨论了基于ARM的SoC中的多核启动顺序以及相关描述

引导 ROM、引导加载程序、使用链接器文件生成图像/十六进制、引导选项(从 SPI/SDIO/PCI 等不同设备引导)。还谈到了从各种存储器(SRAM/GRAM/FLASH)形成的多核引导。除此之外,还讨论了在初始级别的多核引导期间面临的挑战和面临的问题以及处理这些问题/挑战的方法。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18275

    浏览量

    222160
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8651

    浏览量

    361782
  • 控制器
    +关注

    关注

    112

    文章

    15223

    浏览量

    171190
  • FlaSh
    +关注

    关注

    10

    文章

    1550

    浏览量

    146646
  • soc
    soc
    +关注

    关注

    38

    文章

    3745

    浏览量

    215678

原文标题:基于ARM的多核SoC的启动方法

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    面向多核DSP及SoC的平台软件解决方案

    本文介绍了Enea针对多核DSP/SoC的平台软件解决方案。详细介绍了方案的组成,包括面向针对多核DSP/
    发表于 06-14 13:50 2176次阅读
    面向<b class='flag-5'>多核</b>DSP及<b class='flag-5'>SoC</b>的平台软件解决方案

    以全新的多核SoC架构进行LTE开发

    层面形成极大的压力。为了满足这些需求,TI开发出全新的SoC架构,其中许多内建的组件可满足LTE蜂窝基站的需求(见图1)。[/url]图1:德州仪器的多核SoC架构。TI全新的架构采用先进的DSP核技术
    发表于 07-14 14:40

    AM5K2E0x 多核 ARM KeyStone II 片上系统 (SoC)

    AM5K2E0x 多核 ARM KeyStone II 片上系统 (SoC)
    发表于 07-06 15:25

    消费电子助力SoC发展,多核技术是焦点

    多核SoC设计的发展潮流。 一直以来,通用CPU+硬件逻辑(硬件加速器或协处理器)是嵌入式SoC的主流架构。通用CPU来自ARM和MIPS这类通用内核授权商,而硬件逻辑由
    发表于 06-21 06:19

    创龙带您解密TI、Xilinx异构多核SoC处理器核间通讯

    1.什么是异构多核SoC处理器顾名思义,单颗芯片内集成多个不同架构处理单元核心的SoC处理器,我们称之为异构多核SoC处理器,比如:TI的O
    发表于 09-08 09:39

    多核系统的特点和优缺点是什么

    多核系统的特点和优缺点是什么多核SoC的嵌入式软件开发设计方案
    发表于 04-27 06:29

    介绍ARM64架构下启动多核的两种方式

    1、ARM64的多核启动流程分析工作中遇到的多核 ARM CPU 越来越多,总结分享一些多核
    发表于 06-13 18:23

    SOC多核启动流程详解

    的则是你的SOC启动的时候,所有core都上电了。2、启动流程我们就假定 reset地址是可编程的、SOC启动的时候只
    发表于 02-21 15:11

    TI推出多核SoC显著简化通信基础局端设备的设计

    TI推出多核SoC显著简化通信基础局端设备的设计 日前,德州仪器 (TI) 宣布推出一款基于 TI 多核数字信号处理器 (DSP) 的新型片上系统 (SoC) 架构,该架构在业界性能
    发表于 02-23 16:46 608次阅读

    TI推出最新多核SoC架构,实现5倍性能提升

    TI推出最新多核SoC架构,实现5倍性能提升 日前,德州仪器(TI)宣布推出一款基于 TI 多核数字信号处理器(DSP)的新型片上系统(SoC)架构,该架构在业界性能最高的CPU中同
    发表于 02-26 08:38 569次阅读

    一种基于DSP的多核SOC中断扩展设计与实现

    一种基于DSP的多核SOC中断扩展设计与实现_张跃玲
    发表于 01-07 21:08 0次下载

    基于TI最新多核DSP SoC架构的解析

    。 TI多核及媒体基础架构DSP业务部全球业务经理Ramesh Kumar表示,TI的多核SoC产品正是针对市场对上述能力的不断需求而推出的。TI了解市场正在变化,因此推出了这一多核
    发表于 10-24 11:41 2次下载
    基于TI最新<b class='flag-5'>多核</b>DSP <b class='flag-5'>SoC</b>架构的解析

    KeyStone多核SoC工具套件

    过去,实施和部署多核片上系统 (SoC) 器件的一大挑战一直都是为编程和调试这些平台提供适当的工具。开发人员要充分发挥多核性能优势,就必须进行高效率分区,并在这些核上运行高质量软件。复杂多核
    发表于 10-27 13:20 0次下载
    KeyStone<b class='flag-5'>多核</b><b class='flag-5'>SoC</b>工具套件

    搞定缓存一致性验证,多核SoC设计就成功了一半

        原文标题:搞定缓存一致性验证,多核SoC设计就成功了一半 文章出处:【微信公众号:新思科技】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 12-29 21:35 608次阅读

    多核CPU的启动方式

    工作中遇到的多核 ARM CPU 越来越多,总结分享一些多核启动的知识,希望能帮助更多小伙伴。 在 ARM64 架构下如果想要
    的头像 发表于 06-22 10:04 1150次阅读