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

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

3天内不再提示

SMP多核secondary cpu启动流程

麦辣鸡腿堡 来源:TrustZone 作者:Hcoco 2023-12-05 17:41 次阅读

secondary cpu启动

由于psci方式启动secondary cpu的流程,除了其所执行的cpu_ops不同之外,其它流程与spin-table方式是相同的,因此我们这里只给出执行流程图,详细分析可以参考上篇博文。其中以下流程执行secondary cpu启动相关的一些初始化工作:

图片

在初始化完成且hotplug线程创建完成后,就可通过以下流程唤醒cpu hotplug线程:

图片

此后hotplug线程将调用psci回调函数,并最终触发smc异常进入bl31:

图片

bl31接收到该异常后执行std_svc_smc_handler处理函数,并最终调用平台相关的电源管理接口,完成cpu的上电工作,以下为其执行流程:

图片

平台相关回调函数pwr_domain_on将为secondary cpu设置入口函数,然后为其上电使该cpu跳转到内核入口secondary_entry处开始执行。以下为其内核启动流程:

图片

到这里其实就结束了,不得不说这个前辈的文章是真的写的逻辑清晰,收获颇多。

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

    关注

    184

    文章

    17559

    浏览量

    249396
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211088
  • 多核
    +关注

    关注

    0

    文章

    43

    浏览量

    12320
  • SMP
    SMP
    +关注

    关注

    0

    文章

    71

    浏览量

    19628
收藏 人收藏

    评论

    相关推荐

    记录学习ARM Linux的多核启动过程

    CONFIG_HOTPLUG_CPU.cpu_die = vexpress_cpu_die,#endif};2.2.多核启动多核
    发表于 05-25 10:43

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

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

    基于raspi 3b上的SMP设计实现

    本帖主要描述raspi 3b上SMP实现,该实现主要基于现有raspi2 bsp代码基础上添加相关SMP支持,所需支持的功能主要包括:多核启动多核
    发表于 12-05 13:56

    RT-Thread SMP和AMP初体验简介

    多处理,AMP模式的RTOS在各个CPU上均运行一个操作系统实例(这些操作实例不一定完全相同),各个操作系统拥有自己专用的内存,相互之间通过访问受限的共享内存进行通信。RT-Thread SMP 启动
    发表于 02-03 14:33

    RT-Thread框架下的SMP支持

    支持 SMP,在对称多核上可以通过使能 RT_USING_SMP 来开启。系统上电后,各 CPU启动
    发表于 02-13 15:02

    SOC的多核启动流程详解

    启动的时候启动多个core, COLD_BOOT_SINGLE_CPU=0, _secondary_cold_boot=1, 则下面代码会被编译,则主核走 do_primary_col
    发表于 02-21 15:11

    Linux在SMP系统上的移植研究

    硬件平台下的启动流程、任务调度策略、任务间同步与互斥、中断处理等问题,结合自主研发嵌入式应用的实际需求,得到解决上述问题的方案,完成嵌入式Linux在SMP系统上的移植,并实现嵌入式Linux在自主
    发表于 11-14 16:09 11次下载
    Linux在<b class='flag-5'>SMP</b>系统上的移植研究

    ARM64 SMP多核启动(上)—spin-table

    一般嵌入式系统使用的都是对称多处理器(Symmetric Multi-Processor, SMP)系统,包含了多个cpu, 这几个cpu都是相同的处理器,如4核Contex-A53。
    发表于 06-09 14:28 958次阅读
    ARM64 <b class='flag-5'>SMP</b><b class='flag-5'>多核</b><b class='flag-5'>启动</b>(上)—spin-table

    多核CPU启动方式

    多核 CPU启动方式 嵌入式系统的启动的基本流程是先运行 bootloader ,然后由 bootloader 引导
    的头像 发表于 06-22 10:04 2075次阅读

    SMP是什么?多核芯片(SMP)的启动方法

    SMP 英文为Symmetric Multi-Processing ,是对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构,一个服务器系统可以同时运行多个处理器,并共享内
    的头像 发表于 07-26 09:26 1.8w次阅读
    <b class='flag-5'>SMP</b>是什么?<b class='flag-5'>多核</b>芯片(<b class='flag-5'>SMP</b>)的<b class='flag-5'>启动</b>方法

    RT-Thread SMP启动流程

    SMP(Symmetric Multi-processing) :对称多处理,在一个计算机上汇集了一组处理器 (多 CPU), 各 CPU 之间共享内存子系统以及总线结构。
    的头像 发表于 08-03 15:10 1085次阅读
    RT-Thread <b class='flag-5'>SMP</b><b class='flag-5'>启动</b><b class='flag-5'>流程</b>

    secondary cpu初始化状态设置

    spin-table spin-table启动流程的示意图如下: 芯片上电后primary cpu开始执行启动流程,而
    的头像 发表于 12-05 15:27 1001次阅读
    <b class='flag-5'>secondary</b> <b class='flag-5'>cpu</b>初始化状态设置

    如何在内核中启动secondary cpu

    cpu流程,与secondary cpu启动流程是相同的,因此内核复用了
    的头像 发表于 12-05 15:46 540次阅读
    如何在内核中<b class='flag-5'>启动</b><b class='flag-5'>secondary</b> <b class='flag-5'>cpu</b>

    SMP多核启动cpu操作函数

    cpu操作函数 cpu_ops函数由bringup_cpu调用,以触发secondary cpu启动
    的头像 发表于 12-05 16:04 699次阅读
    <b class='flag-5'>SMP</b><b class='flag-5'>多核</b><b class='flag-5'>启动</b><b class='flag-5'>cpu</b>操作函数

    secondary cpu执行流程介绍

    : 由于其底层相关初始化流程与primary cpu类似,因此此处不再介绍。我们这里主要看一下它是如何通过secondary_start_kernel启动idle线程的: asmlin
    的头像 发表于 12-05 16:12 784次阅读
    <b class='flag-5'>secondary</b> <b class='flag-5'>cpu</b>执行<b class='flag-5'>流程</b>介绍