處理函數(shù)根據(jù)funid來決定服務,可以看到PSCI_CPU_ON_AARCH64為0xc4000003,這正是設備樹中填寫的cpu_on屬性的id,會委托psci_cpu_on來執(zhí)行核上電任務。下面分析是重點:?。?!
- >psci_cpu_on()  //lib/psci/psci_main.c
 - >psci_validate_entry_point()  //驗證入口地址有效性并  保存入口點到一個結(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  //實現(xiàn)核上電(平臺實現(xiàn))
  /* Store the re-entry information for the non-secure world. */
  - >cm_init_context_by_index()  //重點:會通過cpu的編號找到 cpu上下文(cpu_context_t),存在cpu寄存器的值,異常返回的時候?qū)憣懙綄募拇嫫髦校缓骵ret,舊返回到了el1?。?!
   - >cm_setup_context()  //設置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);  //注:異常返回時執(zhí)行此地址  于是完成了cpu的啟動?。?!
              write_ctx_reg(state, CTX_SPSR_EL3, ep- >spsr);
psci_cpu_on主要完成開核的工作 ,然后會設置一些異常返回后寄存器的值(eg:從el1 -> el3 -> el1),重點關(guān)注 ep->pc寫到cpu_context結(jié)構(gòu)的CTX_ELR_EL3偏移處(從處理器啟動后會從這個地址取指執(zhí)行)。
實際上, 所有的從處理器啟動后都會從bl31_warm_entrypoint開始執(zhí)行 ,在plat_setup_psci_ops中會設置(每個平臺都有自己的啟動地址寄存器,通過寫這個寄存器來獲得上電后執(zhí)行的指令地址)。
大致說一下:主處理器通過smc進入el3請求開核服務,atf中會響應這種請求, 通過平臺的開核操作來啟動從處理器并且設置從處理的一些寄存器eg:scr_el3、spsr_el3、elr_el3,然后主處理器,恢復現(xiàn)場,eret再次回到el1 ,
而處理器開核之后會從bl31_warm_entrypoint開始執(zhí)行,最后通過el3_exit返回到el1的elr_el3設置的地址。
分析到這atf的分析到此為止,atf中主要是響應內(nèi)核的snc的請求,然后做開核處理,也就是實際的開核動作,但是從處理器最后還是要回到內(nèi)核中執(zhí)行
- 
                                cpu
                                +關(guān)注
關(guān)注
68文章
11199瀏覽量
222088 - 
                                SMP
                                +關(guān)注
關(guān)注
0文章
80瀏覽量
20622 - 
                                函數(shù)
                                +關(guān)注
關(guān)注
3文章
4403瀏覽量
66599 - 
                                設備樹
                                +關(guān)注
關(guān)注
0文章
39瀏覽量
3515 
發(fā)布評論請先 登錄
ARM電源管理中的PSCI是什么意思呢
2160處理器支持VHE嗎?
用于MPLAB X IDE代碼性能分析插件的工作原理和代碼性能分析參考
    
MATLAB圖像處理工具箱的函數(shù)介紹和圖像處理與分析的技術(shù)實現(xiàn)分析
    
用于MPLABX IDE的代碼性能分析插件
psci接口規(guī)范介紹
內(nèi)核中的psci驅(qū)動是什么
    
內(nèi)核中的psci架構(gòu)cpu_ops接口
bl31中的psci架構(gòu)介紹
    
          
        
        
PSCI處理函數(shù)代碼分析
                
 
    
    
           
            
            
                
            
評論