psci_cpu_on () //lib/psci/psci_main.c - > psci_validate_entry_point () //驗(yàn)證入口地址有效性并 保存入口點(diǎn)到一個(gè)結(jié)構(gòu)ep中 - > psci_cpu_on_start (target_cpu, //lib/el3_runtime/aarch64/context_mgmt.c write_ctx_reg (state, CTX_ELR_EL3, ep- >pc); //注:異常返回時(shí)執(zhí)行此地址 于是完成了cpu的啟動(dòng)!!! write_ctx_reg (state, CTX_SP" />

女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PSCI處理函數(shù)代碼分析

麥辣雞腿堡 ? 來(lái)源:TrustZone ? 作者:Hcoco ? 2023-12-05 18:08 ? 次閱讀

處理函數(shù)根據(jù)funid來(lái)決定服務(wù),可以看到PSCI_CPU_ON_AARCH64為0xc4000003,這正是設(shè)備樹(shù)中填寫(xiě)的cpu_on屬性的id,會(huì)委托psci_cpu_on來(lái)執(zhí)行核上電任務(wù)。下面分析是重點(diǎn):!!!

- >psci_cpu_on()  //lib/psci/psci_main.c
 - >psci_validate_entry_point()  //驗(yàn)證入口地址有效性并  保存入口點(diǎn)到一個(gè)結(jié)構(gòu)ep中
 - >psci_cpu_on_start(target_cpu, &ep)   //ep入口地址
  - >psci_plat_pm_ops- >pwr_domain_on(target_cpu)
   - >qemu_pwr_domain_on  //實(shí)現(xiàn)核上電(平臺(tái)實(shí)現(xiàn))
  /* Store the re-entry information for the non-secure world. */
  - >cm_init_context_by_index()  //重點(diǎn):會(huì)通過(guò)cpu的編號(hào)找到 cpu上下文(cpu_context_t),存在cpu寄存器的值,異常返回的時(shí)候?qū)憣?xiě)到對(duì)應(yīng)的寄存器中,然后eret,舊返回到了el1!!!
   - >cm_setup_context()  //設(shè)置cpu上下文
     - > write_ctx_reg(state, CTX_SCR_EL3, scr_el3);  //lib/el3_runtime/aarch64/context_mgmt.c
              write_ctx_reg(state, CTX_ELR_EL3, ep- >pc);  //注:異常返回時(shí)執(zhí)行此地址  于是完成了cpu的啟動(dòng)!!!
              write_ctx_reg(state, CTX_SPSR_EL3, ep- >spsr);

psci_cpu_on主要完成開(kāi)核的工作 ,然后會(huì)設(shè)置一些異常返回后寄存器的值(eg:從el1 -> el3 -> el1),重點(diǎn)關(guān)注 ep->pc寫(xiě)到cpu_context結(jié)構(gòu)的CTX_ELR_EL3偏移處(從處理器啟動(dòng)后會(huì)從這個(gè)地址取指執(zhí)行)。

實(shí)際上, 所有的從處理器啟動(dòng)后都會(huì)從bl31_warm_entrypoint開(kāi)始執(zhí)行 ,在plat_setup_psci_ops中會(huì)設(shè)置(每個(gè)平臺(tái)都有自己的啟動(dòng)地址寄存器,通過(guò)寫(xiě)這個(gè)寄存器來(lái)獲得上電后執(zhí)行的指令地址)。

大致說(shuō)一下:主處理器通過(guò)smc進(jìn)入el3請(qǐng)求開(kāi)核服務(wù),atf中會(huì)響應(yīng)這種請(qǐng)求, 通過(guò)平臺(tái)的開(kāi)核操作來(lái)啟動(dòng)從處理器并且設(shè)置從處理的一些寄存器eg:scr_el3、spsr_el3、elr_el3,然后主處理器,恢復(fù)現(xiàn)場(chǎng),eret再次回到el1 ,

而處理器開(kāi)核之后會(huì)從bl31_warm_entrypoint開(kāi)始執(zhí)行,最后通過(guò)el3_exit返回到el1的elr_el3設(shè)置的地址。

分析到這atf的分析到此為止,atf中主要是響應(yīng)內(nèi)核的snc的請(qǐng)求,然后做開(kāi)核處理,也就是實(shí)際的開(kāi)核動(dòng)作,但是從處理器最后還是要回到內(nèi)核中執(zhí)行

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11029

    瀏覽量

    215867
  • SMP
    SMP
    +關(guān)注

    關(guān)注

    0

    文章

    77

    瀏覽量

    20152
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4367

    瀏覽量

    64107
  • 設(shè)備樹(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    3299
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ARM電源管理中的PSCI是什么意思呢

    新的中斷不會(huì)再發(fā)給該處理器核;反過(guò)來(lái),如果處理器核重新上電,要在OS調(diào)度器中加載該處理器的信息,并且需要重新配置中斷寄存器。而CPUIdle就沒(méi)有加載/移除的需要。從上圖可以看出來(lái),PSCI
    發(fā)表于 04-02 09:45

    2160處理器支持VHE嗎?

    ] CPU15: 關(guān)閉 [ 94.403035] psci: CPU15 被殺死。 [94.417654]再見(jiàn)! 然后控制臺(tái)沒(méi)有輸出,看了kexec代碼后,我有一些疑問(wèn): 1. 2160處理器支持VHE嗎?我
    發(fā)表于 06-08 07:21

    ESAM接口函數(shù)代碼

    ESAM接口函數(shù)代碼 ESAM接口函數(shù)說(shuō)是用子程序的代碼
    發(fā)表于 08-18 16:51 ?65次下載

    華清遠(yuǎn)見(jiàn)FPGA代碼-使用函數(shù)實(shí)現(xiàn)簡(jiǎn)單的八位處理

    華清遠(yuǎn)見(jiàn)FPGA代碼-使用函數(shù)實(shí)現(xiàn)簡(jiǎn)單的八位處理
    發(fā)表于 10-27 18:07 ?4次下載

    ARM處理器的啟動(dòng)代碼分析與設(shè)計(jì)

    ARM處理器的啟動(dòng)代碼分析與設(shè)計(jì)
    發(fā)表于 09-25 08:27 ?12次下載
    ARM<b class='flag-5'>處理</b>器的啟動(dòng)<b class='flag-5'>代碼</b>的<b class='flag-5'>分析</b>與設(shè)計(jì)

    用于MPLAB X IDE代碼性能分析插件的工作原理和代碼性能分析參考

    MPLAB X IDE提供收集有關(guān)C代碼函數(shù)函數(shù)級(jí)性能分析(Function Level Profiling, FLP)數(shù)據(jù)的功能。但是,該數(shù)據(jù)無(wú)法在未安裝MPLAB X IDE插件
    發(fā)表于 06-11 04:28 ?11次下載
    用于MPLAB X IDE<b class='flag-5'>代碼</b>性能<b class='flag-5'>分析</b>插件的工作原理和<b class='flag-5'>代碼</b>性能<b class='flag-5'>分析</b>參考

    MATLAB圖像處理工具箱的函數(shù)介紹和圖像處理分析的技術(shù)實(shí)現(xiàn)分析

    介紹了MATLAB 圖像處理工具箱中的函數(shù), 給出了圖像處理分析的技術(shù)實(shí)現(xiàn), 如用空域法進(jìn)行圖像增強(qiáng), 通過(guò)形態(tài)學(xué)方法進(jìn)行圖像特征抽取與分析
    發(fā)表于 10-30 16:30 ?10次下載
    MATLAB圖像<b class='flag-5'>處理</b>工具箱的<b class='flag-5'>函數(shù)</b>介紹和圖像<b class='flag-5'>處理</b>與<b class='flag-5'>分析</b>的技術(shù)實(shí)現(xiàn)<b class='flag-5'>分析</b>

    用于MPLABX IDE的代碼性能分析插件

    MPLAB X IDE提供收集有關(guān)C代碼函數(shù)函數(shù)級(jí)性能分析(Function Level Profiling,F(xiàn)LP)數(shù)據(jù)的功能。但是,該數(shù)據(jù)無(wú)法在未安裝MPLAB X IDE插件—
    發(fā)表于 05-12 10:38 ?15次下載

    使用Arduino函數(shù)簡(jiǎn)化代碼

    組織擴(kuò)展代碼的一種出色技術(shù)是使用函數(shù),即可以根據(jù)需要從程序的其他部分(例如通過(guò)主循環(huán))調(diào)用的代碼片段。
    的頭像 發(fā)表于 08-16 09:23 ?2144次閱讀
    使用Arduino<b class='flag-5'>函數(shù)</b>簡(jiǎn)化<b class='flag-5'>代碼</b>

    psci接口規(guī)范介紹

    由于psci是由linux內(nèi)核調(diào)用bl31中的安全服務(wù),實(shí)現(xiàn)cpu電源管理功能的。因此其軟件架構(gòu)包含三個(gè)部分: (1)內(nèi)核與bl31之間的調(diào)用接口規(guī)范 (2)內(nèi)核中的架構(gòu) (3)bl31中的架構(gòu)
    的頭像 發(fā)表于 12-05 16:53 ?1300次閱讀

    內(nèi)核中的psci驅(qū)動(dòng)是什么

    內(nèi)核中的psci架構(gòu) 內(nèi)核psci軟件架構(gòu)包含psci驅(qū)動(dòng)和每個(gè)cpu的cpu_ops回調(diào)函數(shù)實(shí)現(xiàn)兩部分。 其中psci驅(qū)動(dòng)實(shí)現(xiàn)了驅(qū)動(dòng)初始化
    的頭像 發(fā)表于 12-05 16:58 ?996次閱讀
    內(nèi)核中的<b class='flag-5'>psci</b>驅(qū)動(dòng)是什么

    內(nèi)核中的psci架構(gòu)cpu_ops接口

    cpu_ops接口 驅(qū)動(dòng)初始化完成后,cpu的cpu_ops就可以調(diào)用這些回調(diào)實(shí)現(xiàn)psci功能的調(diào)用。如下所示,當(dāng)devicetree中cpu的enable-method設(shè)置為psci時(shí),該cpu
    的頭像 發(fā)表于 12-05 17:25 ?945次閱讀

    bl31中的psci架構(gòu)介紹

    std_svc_setup會(huì)在bl31啟動(dòng)流程中被調(diào)用,以用于初始化該服務(wù)相關(guān)的配置。而std_svc_smc_handler為其smc異常處理函數(shù),當(dāng)內(nèi)核通過(guò)psci接口調(diào)用相關(guān)服務(wù)時(shí),最終將由該
    的頭像 發(fā)表于 12-05 17:33 ?1377次閱讀
    bl31中的<b class='flag-5'>psci</b>架構(gòu)介紹

    SMP多核啟動(dòng)PSCI代碼示例

    _setup //lib/psci/psci_setup.c - >plat_setup_psci_ops //設(shè)置平臺(tái)的psci操作 調(diào)用平臺(tái)的plat_setup_
    的頭像 發(fā)表于 12-05 17:45 ?915次閱讀

    C語(yǔ)言如何處理函數(shù)的返回值

    當(dāng)你在函數(shù)的最后寫(xiě)上 return 0 的時(shí)候,它是如何返回給調(diào)用函數(shù)的? 比如 test 函數(shù),為了待會(huì)更好的看懂匯編代碼,我寫(xiě)成了 return 1234。
    的頭像 發(fā)表于 01-16 09:21 ?342次閱讀