亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

基于ARMV8的smp啟動流程介紹

2025-05-20 08:32:13
12
0

1. 概述

多(duo)核啟動時,通(tong)常CPU0作為(wei)主CPU,其它CPU均為(wei)從(cong)CPU,設(she)備上(shang)電后主CPU先啟動完成,再(zai)由主CPU給(gei)從(cong)CPU上(shang)電,并通(tong)知從(cong)CPU從(cong)指(zhi)定的程序入(ru)口開始(shi)執行;通(tong)常情況下,單板初始(shi)化階段由SPL、ATF、UBOOT三部分程序完成,下面(mian)就各部分的工(gong)作流程展開介(jie)紹;

2. 主CPU啟動過程

主CPU啟動(dong)流程如下圖(tu)所示(shi),系統(tong)上(shang)電后(hou)(hou)開始(shi)執行(xing)(xing)SPL程序(xu),在SPL中對必要的(de)基礎外設進(jin)行(xing)(xing)初始(shi)化(hua),并根據配置(zhi)從FLASH或(huo)者SD卡等存(cun)儲介質中load UBOOT版(ban)本到(dao)(dao)(dao)內(nei)存(cun)中,通常ATF版(ban)本和UBOOT版(ban)本打包在一(yi)起;UBOOT版(ban)本load完(wan)成后(hou)(hou)跳(tiao)轉到(dao)(dao)(dao)ATF開始(shi)執行(xing)(xing),ATF程序(xu)的(de)入(ru)口(kou)函數(shu)為(wei)bl31_entrypoint,ATF完(wan)成SMC相關命令(ling)(ling)注冊后(hou)(hou),從EL3切換到(dao)(dao)(dao)EL2狀態執行(xing)(xing)UBOOT程序(xu),UBOOT的(de)入(ru)口(kou)函數(shu)為(wei)_start,和SPL的(de)入(ru)口(kou)函數(shu)相同,這(zhe)是因為(wei)SPL和UBOOT這(zhe)部分代碼共用,部分代碼用編譯宏區(qu)分;UBOOT初始(shi)化(hua)完(wan)成后(hou)(hou)進(jin)入(ru)到(dao)(dao)(dao)main_loop,這(zhe)個時候可(ke)(ke)以(yi)進(jin)入(ru)UBOOT命令(ling)(ling)行(xing)(xing),也可(ke)(ke)以(yi)啟動(dong)os;至此(ci),主CPU已經可(ke)(ke)以(yi)正常工作;

3. 從CPU啟動過程

主CPU通(tong)過(guo)發送psci_cpu_on的(de)SMC消息,通(tong)知ATF給從CPU上電,并喚醒從CPU從指(zhi)定入(ru)口(kou)函(han)(han)(han)數(shu)開(kai)始執行(xing)(xing),入(ru)口(kou)函(han)(han)(han)數(shu)指(zhi)針作(zuo)為(wei)psci_cpu_on消息參數(shu)傳入(ru);從CPU上電起來后(hou)(hou)從SPL程序(xu)(xu)的(de)入(ru)口(kou)_start開(kai)始執行(xing)(xing),完(wan)成基(ji)本初(chu)始化后(hou)(hou),根據cpuid的(de)判斷(duan)分(fen)流,進入(ru)到(dao)從CPU的(de)代碼分(fen)支執行(xing)(xing),循環讀取CPU_RELEASE_ADDR寄存(cun)器(qi),如果非0,則跳轉(zhuan)到(dao)該地址(zhi)開(kai)始執行(xing)(xing),這個(ge)(ge)寄存(cun)器(qi)在ATF中(zhong)賦值為(wei)plat_secondary_cpus_bl31_entry函(han)(han)(han)數(shu)指(zhi)針,ATF中(zhong)會(hui)繼(ji)續跳轉(zhuan)到(dao)PLAT_SEC_ENTRY執行(xing)(xing),這個(ge)(ge)地址(zhi)在ATF中(zhong)被賦值為(wei)bl31_warm_entrypoint,然后(hou)(hou)將psci_cpu_on傳入(ru)的(de)程序(xu)(xu)入(ru)口(kou)函(han)(han)(han)數(shu)作(zuo)為(wei)上下文切換(huan)的(de)ELR,使(shi)用ERET指(zhi)令完(wan)成EL3到(dao)EL2的(de)程序(xu)(xu)跳轉(zhuan),如果時Linux操作(zuo)系統,最終會(hui)跳轉(zhuan)到(dao)sencondary_entry函(han)(han)(han)數(shu);

0條評論
0 / 1000
c****8
4文章數
0粉絲數
c****8
4 文章 | 0 粉絲
c****8
4文章數
0粉絲數
c****8
4 文章(zhang) | 0 粉絲(si)
原創

基于ARMV8的smp啟動流程介紹

2025-05-20 08:32:13
12
0

1. 概述

多(duo)核啟動時,通常CPU0作為主(zhu)CPU,其它CPU均為從CPU,設備上電后主(zhu)CPU先啟動完成,再由主(zhu)CPU給從CPU上電,并(bing)通知從CPU從指(zhi)定的程(cheng)序入口開(kai)始執行;通常情況下(xia),單板初(chu)始化階(jie)段由SPL、ATF、UBOOT三部(bu)分(fen)程(cheng)序完成,下(xia)面就各部(bu)分(fen)的工作流程(cheng)展(zhan)開(kai)介紹(shao);

2. 主CPU啟動過程

主CPU啟動(dong)流程(cheng)如下圖所(suo)示,系統上電后開(kai)始執行SPL程(cheng)序(xu),在SPL中對必(bi)要的(de)基(ji)礎外設進(jin)(jin)行初始化,并根(gen)據配置從(cong)(cong)FLASH或者SD卡(ka)等存(cun)儲介質中load UBOOT版(ban)本(ben)到(dao)內(nei)存(cun)中,通(tong)常ATF版(ban)本(ben)和UBOOT版(ban)本(ben)打包在一起;UBOOT版(ban)本(ben)load完(wan)成(cheng)(cheng)后跳轉(zhuan)到(dao)ATF開(kai)始執行,ATF程(cheng)序(xu)的(de)入口函(han)(han)數為bl31_entrypoint,ATF完(wan)成(cheng)(cheng)SMC相關命(ming)令注冊(ce)后,從(cong)(cong)EL3切換到(dao)EL2狀態執行UBOOT程(cheng)序(xu),UBOOT的(de)入口函(han)(han)數為_start,和SPL的(de)入口函(han)(han)數相同,這(zhe)是因為SPL和UBOOT這(zhe)部(bu)分(fen)代碼共用(yong),部(bu)分(fen)代碼用(yong)編譯(yi)宏區分(fen);UBOOT初始化完(wan)成(cheng)(cheng)后進(jin)(jin)入到(dao)main_loop,這(zhe)個時(shi)候可以(yi)進(jin)(jin)入UBOOT命(ming)令行,也可以(yi)啟動(dong)os;至(zhi)此,主CPU已經可以(yi)正(zheng)常工作(zuo);

3. 從CPU啟動過程

主CPU通過(guo)發送psci_cpu_on的SMC消息(xi),通知ATF給從(cong)(cong)(cong)CPU上(shang)電,并喚醒從(cong)(cong)(cong)CPU從(cong)(cong)(cong)指定入(ru)(ru)口(kou)函(han)(han)(han)數(shu)(shu)開(kai)始執行,入(ru)(ru)口(kou)函(han)(han)(han)數(shu)(shu)指針(zhen)作為psci_cpu_on消息(xi)參數(shu)(shu)傳入(ru)(ru);從(cong)(cong)(cong)CPU上(shang)電起來后從(cong)(cong)(cong)SPL程(cheng)序的入(ru)(ru)口(kou)_start開(kai)始執行,完(wan)成基本初(chu)始化(hua)后,根據cpuid的判(pan)斷分流,進入(ru)(ru)到(dao)(dao)從(cong)(cong)(cong)CPU的代碼(ma)分支執行,循環讀取CPU_RELEASE_ADDR寄存器,如果非0,則跳轉(zhuan)到(dao)(dao)該地址開(kai)始執行,這個寄存器在(zai)(zai)ATF中(zhong)賦(fu)值為plat_secondary_cpus_bl31_entry函(han)(han)(han)數(shu)(shu)指針(zhen),ATF中(zhong)會繼續跳轉(zhuan)到(dao)(dao)PLAT_SEC_ENTRY執行,這個地址在(zai)(zai)ATF中(zhong)被賦(fu)值為bl31_warm_entrypoint,然后將psci_cpu_on傳入(ru)(ru)的程(cheng)序入(ru)(ru)口(kou)函(han)(han)(han)數(shu)(shu)作為上(shang)下文切換的ELR,使用ERET指令完(wan)成EL3到(dao)(dao)EL2的程(cheng)序跳轉(zhuan),如果時Linux操作系統,最終會跳轉(zhuan)到(dao)(dao)sencondary_entry函(han)(han)(han)數(shu)(shu);

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0