內(nèi)核中的psci架構
內(nèi)核psci軟件架構包含psci驅(qū)動和每個cpu的cpu_ops回調(diào)函數(shù)實現(xiàn)兩部分。
其中psci驅(qū)動實現(xiàn)了驅(qū)動初始化和psci相關接口實現(xiàn)功能,而cpu_ops回調(diào)函數(shù)最終也會調(diào)用psci驅(qū)動的接口。
psci驅(qū)動
首先我們看一下devicetree中的配置:
psci {
compatible = "arm,psci-0.2"; (1)
method = "smc"; (2)
}
(1)用于指定psci版本
(2)根據(jù)該psci由bl31處理還是hypervisor處理,可以指定其對應的陷入方式。若由bl31處理為smc,若由hypervisor處理則為hvc
驅(qū)動流程主要是與bl31通信,以確認其是否支持給定的psci版本,以及相關psci操作函數(shù)的實現(xiàn),其流程如下:
其主要工作即為psci設置相關的回調(diào)函數(shù),該函數(shù)定義如下:
static void __init psci_0_2_set_functions(void)
{
…
psci_ops = (struct psci_operations){
.get_version = psci_0_2_get_version,
.cpu_suspend = psci_0_2_cpu_suspend,
.cpu_off = psci_0_2_cpu_off,
.cpu_on = psci_0_2_cpu_on,
.migrate = psci_0_2_migrate,
.affinity_info = psci_affinity_info,
.migrate_info_type = psci_migrate_info_type,
}; (1)
register_restart_handler(&psci_sys_reset_nb); (2)
pm_power_off = psci_sys_poweroff; (3)
}
(1)為psci_ops設置相應的回調(diào)函數(shù)
(2)為psci模塊設置系統(tǒng)重啟時的通知函數(shù)
(3)將系統(tǒng)的power_off函數(shù)指向相應的psci接口
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
內(nèi)核
+關注
關注
4文章
1468瀏覽量
42880 -
cpu
+關注
關注
68文章
11279瀏覽量
225015 -
驅(qū)動
+關注
關注
12文章
1956瀏覽量
88544 -
SMP
+關注
關注
0文章
81瀏覽量
20828
發(fā)布評論請先 登錄
相關推薦
熱點推薦
Linux內(nèi)核中container_of原理詳解
Linux內(nèi)核中經(jīng)常可見container_of的身影,它在實際驅(qū)動的編寫中也是廣泛應用。
發(fā)表于 07-14 15:19
?853次閱讀
在Linux內(nèi)核中添加wifi驅(qū)動
在Linux內(nèi)核中添加wifi驅(qū)動Linux WIFI驅(qū)動實驗rtl8723 Wifi聯(lián)網(wǎng)測試
發(fā)表于 02-05 07:59
ARM電源管理中的PSCI是什么意思呢
今天來看一個電源功耗相關的東西,PSCI(Power State Coordination Interface),翻譯一下就是“電源狀態(tài)協(xié)作接口”。從名字就能直觀看出來,PSCI是一套電源管理
發(fā)表于 04-02 09:45
Android的Linux內(nèi)核與驅(qū)動程序開發(fā)教程
Android內(nèi)核是基于Linux 2.6內(nèi)核的,它是一個增強內(nèi)核版本,除了修改部分Bug外,它提供了用于支持Android平臺的設備驅(qū)動,這里介紹了Android
發(fā)表于 09-05 14:24
?335次下載
內(nèi)核驅(qū)動架構圖及程序
內(nèi)核驅(qū)動是軟件與硬件交互的橋梁,通過文件系統(tǒng)接口訪問OpenHarmony內(nèi)核的硬件資源,是用戶與內(nèi)核之間、進程與進程之間通信的一種方式。每類驅(qū)動
發(fā)表于 04-13 11:18
?2次下載
linux內(nèi)核中的driver_register介紹
向linux內(nèi)核注冊驅(qū)動由driver_register()完成。它將驅(qū)動程序的信息添加到內(nèi)核的驅(qū)動程序列表
psci電源管理接口可以用于什么場景
psci是arm提供的一套電源管理接口,當前一共包含0.1、0.2和1.0三個版本。它可被用于以下場景:(1)cpu的idle管理 (2)cpu hotplug以及secondary cpu啟動
psci接口規(guī)范介紹
由于psci是由linux內(nèi)核調(diào)用bl31中的安全服務,實現(xiàn)cpu電源管理功能的。因此其軟件架構包含三個部分: (1)內(nèi)核與bl31之間的調(diào)用接口規(guī)范 (2)
內(nèi)核中的psci架構cpu_ops接口
cpu_ops接口 驅(qū)動初始化完成后,cpu的cpu_ops就可以調(diào)用這些回調(diào)實現(xiàn)psci功能的調(diào)用。如下所示,當devicetree中cpu的enable-method設置為psci
bl31中的psci架構介紹
bl31中的psci架構 bl31為內(nèi)核提供了一系列運行時服務,psci作為其標準運行時服務的一部分,通過宏DECLARE_RT_SVC注冊到系統(tǒng)中
SMP多核啟動PSCI代碼示例
1、std_svc_setup (主要關注設置psci操作集)--有服務 std_svc_setup //services/std_svc/std_svc_setup.c - >psci
PSCI處理函數(shù)代碼分析
處理函數(shù)根據(jù)funid來決定服務,可以看到PSCI_CPU_ON_AARCH64為0xc4000003,這正是設備樹中填寫的cpu_on屬性的id,會委托psci_cpu_on來執(zhí)行核上電任務。下面
linux驅(qū)動程序如何加載進內(nèi)核
在Linux系統(tǒng)中,驅(qū)動程序是內(nèi)核與硬件設備之間的橋梁。它們允許內(nèi)核與硬件設備進行通信,從而實現(xiàn)對硬件設備的控制和管理。 驅(qū)動程序的編寫
linux內(nèi)核中通用HID觸摸驅(qū)動
在linux內(nèi)核中,為HID觸摸面板實現(xiàn)了一個通用的驅(qū)動程序,位于/drivers/hid/hid-multitouch.c文件中。hid觸摸驅(qū)動
內(nèi)核中的psci驅(qū)動是什么
評論