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文章
10824瀏覽量
211135 -
SMP
+關注
關注
0文章
71瀏覽量
19631 -
函數
+關注
關注
3文章
4304瀏覽量
62427 -
設備樹
+關注
關注
0文章
38瀏覽量
3110
發布評論請先 登錄
相關推薦
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
?961次閱讀
ARM64 SMP多核啟動(下)—PSCI
上面說了pin-table的多核啟動方式,看似很繁瑣,實際上并不復雜,無外乎主處理器喚醒從處理器到指定地址上去執行指令
發表于 06-09 14:31
?678次閱讀
多核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
評論