cpu操作函数
cpu_ops函数由bringup_cpu调用,以触发secondary cpu启动。它是根据设备树中解析出的enable-method属性确定的。
int __init init_cpu_ops(int cpu)
{
const char *enable_method = cpu_read_enable_method(cpu); (1)
…
cpu_ops[cpu] = cpu_get_ops(enable_method); (2)
…
}
(1)获取该cpu enable-method属性的值
(2)根据其enable-method获取其对应的cpu_ops回调
其中spin-table启动方式的回调如下:
const struct cpu_operations smp_spin_table_ops = {
.name = "spin-table",
.cpu_init = smp_spin_table_cpu_init,
.cpu_prepare = smp_spin_table_cpu_prepare,
.cpu_boot = smp_spin_table_cpu_boot,
}
触发secondary cpu启动
以上流程都准备完成后,触发secondary cpu启动就非常简单了。只需调用其cpu_ops回调函数,向其对应的spin_table_cpu_release_addr位置写入secondary cpu入口地址即可。以下为其调用流程:
其中smp_spin_table_cpu_boot的实现如下:
static int smp_spin_table_cpu_boot(unsigned int cpu)
{
write_pen_release(cpu_logical_map(cpu)); (1)
sev(); (2)
return 0;
}
(1)向给定地址写入内核entry
(2)通过sev指令唤醒secondary cpu启动
此后,该线程将等待cpu启动完成,并在完成后将其设置为online状态
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
cpu
+关注
关注
68文章
10862浏览量
211730 -
SMP
+关注
关注
0文章
74浏览量
19661 -
函数
+关注
关注
3文章
4331浏览量
62598 -
设备树
+关注
关注
0文章
38浏览量
3123
发布评论请先 登录
相关推荐
AliOS Things SMP系统及其在esp32上实现示例
对应CPU的SMP功能:2.1 核启动加载目前的启动顺序是,系统默认开始启动0核,在0核的主任务入口内启
发表于 05-15 12:45
记录学习ARM Linux的多核启动过程
CONFIG_HOTPLUG_CPU.cpu_die = vexpress_cpu_die,#endif};2.2.多核启动多核的
发表于 05-25 10:43
ARM64 SMP多核启动相关资料推荐(下)
处理器的启动,仅此而已,所以,现在社区几乎很少使用spin-table这种方式,取而代之的是psci,他不仅可以启动从处理器,还可以关闭,挂起等其他核操作,现在基本上arm64平台上使用多核
发表于 06-06 17:11
基于raspi 3b上的SMP设计实现
本帖主要描述raspi 3b上SMP实现,该实现主要基于现有raspi2 bsp代码基础上添加相关SMP支持,所需支持的功能主要包括:多核启动多核
发表于 12-05 13:56
RT-Thread SMP和AMP初体验简介
,所有CPU共享系统内存和外设资源。嵌入式领域除 SMP 外还有一种支持多核处理器芯片的操作系统体系结构,即 AMP。AMP(Asymmetric Multi-processing)
发表于 02-03 14:33
Linux在SMP系统上的移植研究
基于自主开发以双核嵌入式CPU EM8301为处理核心的嵌入式应用的目的,针对双核CPU芯片的系统结构和Linux内核的特性,通过研究嵌入式Linux操作系统在SMP系统上的移植,探讨
发表于 11-14 16:09
•11次下载
ARM64 SMP多核启动(上)—spin-table
一般嵌入式系统使用的都是对称多处理器(Symmetric Multi-Processor, SMP)系统,包含了多个cpu, 这几个cpu都是相同的处理器,如4核Contex-A53。
发表于 06-09 14:28
•992次阅读
ARM64 SMP多核启动(下)—PSCI
上面说了pin-table的多核启动方式,看似很繁琐,实际上并不复杂,无外乎主处理器唤醒从处理器到指定地址上去执行指令
发表于 06-09 14:31
•724次阅读
多核CPU的启动方式
工作中遇到的多核 ARM CPU 越来越多,总结分享一些多核启动的知识,希望能帮助更多小伙伴。 在 ARM64 架构下如果想要启动
SMP是什么?多核芯片(SMP)的启动方法
SMP 英文为Symmetric Multi-Processing ,是对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构,一个服务器系统可以同时运行多个处理器,并共享内
SMP是什么 启动方式介绍
,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。 CMP 英文为Chip multiprocessors,指的是单芯片多处理器,也指多核心。其思想是将大规模并行处理器中的SMP集成到同一芯片内,各个处理器并行执行不同的进程。 (1)
SMP多核启动PSCI代码示例
//lib/psci/psci_setup.c - >plat_setup_psci_ops //设置平台的psci操作 调用平台的plat_setup_psci_ops函数去设置psci操作 eg
评论