色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

麥辣雞腿堡 ? 來源:TrustZone ? 作者:Hcoco ? 2023-12-05 17:33 ? 次閱讀

bl31中的psci架構(gòu)

bl31為內(nèi)核提供了一系列運行時服務,psci作為其標準運行時服務的一部分,通過宏DECLARE_RT_SVC注冊到系統(tǒng)中。其相應的定義如下:

DECLARE_RT_SVC(
		std_svc,

		OEN_STD_START,
		OEN_STD_END,
		SMC_TYPE_FAST,
		std_svc_setup,
		std_svc_smc_handler
)

其中std_svc_setup會在bl31啟動流程中被調(diào)用,以用于初始化該服務相關的配置。而std_svc_smc_handler為其smc異常處理函數(shù),當內(nèi)核通過psci接口調(diào)用相關服務時,最終將由該函數(shù)執(zhí)行實際的處理流程。
圖片

上圖為psci初始化相關的流程,它主要包含內(nèi)容:(1)前面我們已經(jīng)介紹過power domain相關的背景,即psci需要協(xié)調(diào)不同層級的power domain狀態(tài),因此其必須要了解系統(tǒng)的power domain配置情況。以上流程中紅色虛線框的部分主要就是用于初始化系統(tǒng)的power domain拓撲及其狀態(tài)

(2)由于psci在執(zhí)行電源相關接口時,最終需要操作實際的硬件。而它們是與架構(gòu)相關的,因此其操作函數(shù)最終需要注冊到平臺相關的回調(diào)中。plat_setup_psci_ops即用于注冊特定平臺的psci_ops回調(diào),其格式如下:

typedef struct plat_psci_ops {
	void (*cpu_standby)(plat_local_state_t cpu_state);
	int (*pwr_domain_on)(u_register_t mpidr);
	void (*pwr_domain_off)(const psci_power_state_t *target_state);
	void (*pwr_domain_suspend_pwrdown_early)(
				const psci_power_state_t *target_state);
	void (*pwr_domain_suspend)(const psci_power_state_t *target_state);
	void (*pwr_domain_on_finish)(const psci_power_state_t *target_state);
	void (*pwr_domain_on_finish_late)(
				const psci_power_state_t *target_state);
	void (*pwr_domain_suspend_finish)(
				const psci_power_state_t *target_state);
	void __dead2 (*pwr_domain_pwr_down_wfi)(
				const psci_power_state_t *target_state);
	void __dead2 (*system_off)(void);
	void __dead2 (*system_reset)(void);
	int (*validate_power_state)(unsigned int power_state,
				    psci_power_state_t *req_state);
	int (*validate_ns_entrypoint)(uintptr_t ns_entrypoint);
	void (*get_sys_suspend_power_state)(
				    psci_power_state_t *req_state);
	int (*get_pwr_lvl_state_idx)(plat_local_state_t pwr_domain_state,
				    int pwrlvl);
	int (*translate_power_state_by_mpidr)(u_register_t mpidr,
				    unsigned int power_state,
				    psci_power_state_t *output_state);
	int (*get_node_hw_state)(u_register_t mpidr, unsigned int power_level);
	int (*mem_protect_chk)(uintptr_t base, u_register_t length);
	int (*read_mem_protect)(int *val);
	int (*write_mem_protect)(int val);
	int (*system_reset2)(int is_vendor,
				int reset_type, u_register_t cookie);
}

最后我們再看一下psci操作相應的異常處理流程:

圖片
即其會根據(jù)function id的值,分別執(zhí)行相應的電源管理服務,如啟動cpu時會調(diào)用psci_cpu_on函數(shù),重啟系統(tǒng)時會調(diào)用psci_system_rest函數(shù)等。

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

    關注

    3

    文章

    1408

    瀏覽量

    41072
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11031

    瀏覽量

    215917
  • SMP
    SMP
    +關注

    關注

    0

    文章

    78

    瀏覽量

    20153
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    可編程CPU重置地址,單CPU冷啟動配置

    如果將BL31用作TF-A入口點而不是BL1,則上圖仍然相關,因為在這種情況下,所有這些操作都將發(fā)生在BL31。有關詳細信息,請參閱第6節(jié)“使用B
    發(fā)表于 12-02 11:00 ?1382次閱讀
    可編程CPU重置地址,單CPU冷啟動配置

    基于armv8架構(gòu)對u-boot進行啟動流程分析(一)

    Linux kernel;啟動BL1,BL2,BL31BL32則是一個完整的ATF信任鏈建立流程(ARM Trusted Firmware),像常見的
    發(fā)表于 05-23 15:59

    如何讓BL31的調(diào)試信息輸出到S32R45的uart?

    我用“DEBUG=1”構(gòu)建 ATF 映像,uart 可以顯示 BL2 的調(diào)試信息,但沒有顯示 BL31 的調(diào)試信息。 為什么?BL2到BL31,是不是又設置了控制臺?如何讓
    發(fā)表于 04-11 08:20

    BL31未在Kirkstone上加載的原因?

    imx8mm_evk.h 和 imx8mm_evk.c 的設置時,SPL 打印 do uart3,但它應該顯示:注意:BL31:v2.6(發(fā)布
    發(fā)表于 04-19 11:00

    ATFbl2的啟動

    bl2_entrypoint函數(shù)最終會觸發(fā)安全監(jiān)控模式調(diào)用(smc) ,通知bl1將CPU的控制權(quán)限轉(zhuǎn)交給bl31,然后執(zhí)行bl31。 該函數(shù)會執(zhí)行 ? 平臺相關的初始化、 ? 獲取
    的頭像 發(fā)表于 11-07 15:59 ?1142次閱讀
    ATF<b class='flag-5'>中</b><b class='flag-5'>bl</b>2的啟動

    ATF如何用函數(shù)完成bl2的啟動

    bl31加載到內(nèi)存后會觸發(fā)安全監(jiān)控模式調(diào)用(smc)將CPU權(quán)限轉(zhuǎn)交給bl31。 該函數(shù)的主要內(nèi)容和相關注釋如下: ** void bl2_main ( void
    的頭像 發(fā)表于 11-07 16:04 ?1010次閱讀

    ATFbl2到bl31的跳轉(zhuǎn)介紹

    bl2到bl31的跳轉(zhuǎn) 在bl2_main函數(shù)中最終會調(diào)用smc(BL1_SMC_RUN_IMAGE,(unsigned long)next_bl
    的頭像 發(fā)表于 11-07 16:09 ?1320次閱讀

    ATFbl31的啟動

    bl2觸發(fā)安全監(jiān)控模式調(diào)用后會跳轉(zhuǎn)到bl31執(zhí)行,bl31最主要的作用是 建立EL3運行態(tài)的軟件配置 , 在該階段會完成各種類型的安全
    的頭像 發(fā)表于 11-07 16:13 ?1731次閱讀
    ATF<b class='flag-5'>中</b><b class='flag-5'>bl31</b>的啟動

    ATFbl31函數(shù)介紹與使用

    runtime_svc_init函數(shù) 該函數(shù)主要用來建立安全監(jiān)控模式調(diào)用處理函數(shù)的索引表,并執(zhí)行EL3提供的服務項的初始化操作,獲取TEE OS的入口地址并賦值給bl32_init變量,以備啟動
    的頭像 發(fā)表于 11-07 16:23 ?924次閱讀

    Bl31斷處理流程概述

    aarch64架構(gòu),在每個異常等級下都包含了四張異常等級表。 bl31的異常向量表定義在runtime_exceptions.S,其與下圖的定義一致
    的頭像 發(fā)表于 11-07 17:43 ?909次閱讀
    <b class='flag-5'>Bl31</b><b class='flag-5'>中</b>斷處理流程概述

    psci接口規(guī)范介紹

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

    內(nèi)核psci驅(qū)動是什么

    "; ( 2 ) } (1)用于指定psci版本 (2)根據(jù)該pscibl31處理還是hypervisor處理,可以指定其對應的陷入方式。若由bl31處理為smc,若由hypervi
    的頭像 發(fā)表于 12-05 16:58 ?1006次閱讀
    內(nèi)核<b class='flag-5'>中</b>的<b class='flag-5'>psci</b>驅(qū)動是什么

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

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

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

    處理函數(shù)根據(jù)funid來決定服務,可以看到PSCI_CPU_ON_AARCH64為0xc4000003,這正是設備樹填寫的cpu_on屬性的id,會委托psci_cpu_on來執(zhí)行核上電任務。下面
    的頭像 發(fā)表于 12-05 18:08 ?1155次閱讀

    armv8 u-boot的啟動介紹

    先看arm官網(wǎng)提供的一張圖: 上圖詳細概括了arm官方推薦的armv8的啟動層次結(jié)構(gòu): 官方將啟動分為了BL1,BL2,BL31BL32,BL
    的頭像 發(fā)表于 12-07 11:09 ?3132次閱讀
    armv8 u-boot的啟動<b class='flag-5'>介紹</b>
    主站蜘蛛池模板: 精品伊人久久 | 一边啪啪的一边呻吟声口述 | 国产精品成人影院在线观看 | 免费人妻无码AV不卡在线 | 一个色综合久久 | 亚洲中文无码AV在线观看 | 浪货嗯啊趴下NP粗口黄暴 | 亚洲中文字幕乱码熟女在线 | 国产互换后人妻的疯狂VIDEO | 九九热这里只有精品2 | 国产精品一区二区亚瑟不卡 | 肉动漫3D卡通无修在线播放 | 国产亚洲精品久久777777 | 99re5.久久热在线视频 | 亚洲三区视频 | 被窝伦理电影午夜 | 在线看片成人免费视频 | 性色香蕉AV久久久天天网 | 久久精品亚洲AV无码三区观看 | 久久免费视频在线观看6 | 捏奶动态图吃奶动态图q | 97精品视频 | 女人久久WWW免费人成看片 | 日本无码色哟哟婷婷最新网站 | 亚洲性夜夜夜色综合网 | 亚洲香蕉视频在线播放 | 美女逼逼毛茸茸 | 久久成人国产精品一区二区 | 亚洲精品国产自在在线观看 | 国产精品亚洲视频在线观看 | 国产女人91精品嗷嗷嗷嗷 | 777久久人妻少妇嫩草AV | 动漫美女3d被爆漫画 | 在线观看国产精选免费 | ewp系列虐杀在线视频 | 国产精品热久久高潮AV袁孑怡 | 国产精品乱人无码伦AV在线A | 国产精品人妻无码久久久蜜桃 | 精品熟女少妇AV久久免费A片 | 伊人国产视频 | 国产精品视频大全 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品