本文基于RockPi 4A
單板Linux4.4
內(nèi)核介紹OPP Table
。
內(nèi)核中將頻率冒冬、電壓的相關(guān)配置放在DTSI
文件中毅该,這些配置信息組成的節(jié)點(diǎn)被稱(chēng)為OPP Table(Operating Performance Points)
咨堤。
定義文件:arch/arm64/boot/dts/rockchip/rk3399-opp.dtsi
,內(nèi)容如下:
cluster0_opp: opp-table0 {
compatible = "operating-points-v2";
opp-shared;
rockchip,temp-hysteresis = <5000>; ## 5攝氏度
rockchip,low-temp = <0>;
rockchip,low-temp-min-volt = <900000>; ## 0.9V
nvmem-cells = <&cpul_leakage>;
nvmem-cell-names = "cpu_leakage";
rockchip,pvtm-voltage-sel = <
0 143500 0
143501 148500 1
148501 152000 2
152001 999999 3
>;
rockchip,pvtm-freq = <408000>;
rockchip,pvtm-volt = <1000000>;
rockchip,pvtm-ch = <0 0>;
rockchip,pvtm-sample-time = <1000>;
rockchip,pvtm-number = <10>;
rockchip,pvtm-error = <1000>;
rockchip,pvtm-ref-temp = <41>;
rockchip,pvtm-temp-prop = <115 66>;
rockchip,thermal-zone = "soc-thermal";
opp-408000000 {
opp-hz = /bits/ 64 <408000000>;
opp-microvolt = <800000 800000 1200000>;
opp-microvolt-L0 = <800000 800000 1200000>;
opp-microvolt-L1 = <800000 800000 1200000>;
opp-microvolt-L2 = <800000 800000 1200000>;
opp-microvolt-L3 = <800000 800000 1200000>;
clock-latency-ns = <40000>;
};
opp-600000000 {
opp-hz = /bits/ 64 <600000000>;
opp-microvolt = <800000 800000 1200000>;
opp-microvolt-L0 = <800000 800000 1200000>;
opp-microvolt-L1 = <800000 800000 1200000>;
opp-microvolt-L2 = <800000 800000 1200000>;
opp-microvolt-L3 = <800000 800000 1200000>;
clock-latency-ns = <40000>;
};
opp-816000000 {
opp-hz = /bits/ 64 <816000000>;
opp-microvolt = <850000 850000 1200000>;
opp-microvolt-L0 = <850000 850000 1200000>;
opp-microvolt-L1 = <825000 825000 1200000>;
opp-microvolt-L2 = <800000 800000 1200000>;
opp-microvolt-L3 = <800000 800000 1200000>;
clock-latency-ns = <40000>;
opp-suspend;
};
opp-1008000000 {
opp-hz = /bits/ 64 <1008000000>;
opp-microvolt = <925000 925000 1200000>;
opp-microvolt-L0 = <925000 925000 1200000>;
opp-microvolt-L1 = <900000 900000 1200000>;
opp-microvolt-L2 = <875000 875000 1200000>;
opp-microvolt-L3 = <850000 850000 1200000>;
clock-latency-ns = <40000>;
};
opp-1200000000 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <1000000 1000000 1200000>;
opp-microvolt-L0 = <1000000 1000000 1200000>;
opp-microvolt-L1 = <975000 975000 1200000>;
opp-microvolt-L2 = <950000 950000 1200000>;
opp-microvolt-L3 = <925000 925000 1200000>;
clock-latency-ns = <40000>;
};
opp-1416000000 {
opp-hz = /bits/ 64 <1416000000>;
opp-microvolt = <1125000 1125000 1200000>;
opp-microvolt-L0 = <1125000 1125000 1200000>;
opp-microvolt-L1 = <1100000 1100000 1200000>;
opp-microvolt-L2 = <1075000 1075000 1200000>;
opp-microvolt-L3 = <1050000 1050000 1200000>;
clock-latency-ns = <40000>;
};
};
上面節(jié)點(diǎn)中的相關(guān)屬性含義如下:
1、opp-shared
:表示opp-table1
是小核的各CPU
共用煞额。
2、rockchip,temp-hysteresis
:遲滯參數(shù)沾谜,防止頻繁進(jìn)入高溫或低溫膊毁,單位:毫攝氏度。
3基跑、rockchip,low-temp
:低溫閾值婚温。小于該值時(shí),進(jìn)入低溫媳否,大于‘該值+遲滯參數(shù)’時(shí)栅螟,恢復(fù)常溫。
4篱竭、rockchip,low-temp-min-volt
:低溫下最低電壓力图,單位:微伏。
5掺逼、nvmem-cells
:從eFUSE
中讀取相關(guān)信息值(小核漏電流)吃媒。
6、rockchip,pvtm-voltage-sel
:min-pvtm(單位KHz)、max-pvtm(單位KHz)和voltage-selector
(用于匹配opp
節(jié)點(diǎn)中opp-microvolt-L*
屬性的序列號(hào))赘那。例:pvtm值為:0 ~ 143500 使用opp-microvolt-L0
惑朦,143501 ~ 148500使用opp-microvolt-L1
7、rockchip,pvtm-freq
:時(shí)鐘頻率(KHz)漓概,在獲取pvtm
的頻率前漾月,先設(shè)置CPU
頻率。
8胃珍、rockchip,pvtm-volt
:電壓(微伏)梁肿,在獲取pvtm
的頻率前,先設(shè)置CPU
電壓觅彰。
9吩蔑、rockchip,pvtm-ch
:PVTM
通道,格式<通道號(hào) sel的序號(hào)>
10填抬、rockchip,pvtm-sample-time
:PVTM
采樣時(shí)間烛芬,單位:毫秒。
11飒责、rockchip,pvtm-number
:PVTM
采樣個(gè)數(shù)赘娄。
12、rockchip,pvtm-error
:允許采樣數(shù)據(jù)之間的誤差宏蛉。
13遣臼、rockchip,pvtm-ref-temp
:參考溫度。
14拾并、rockchip,pvtm-temp-prop
:PVTM
隨溫度變化的比例系數(shù)揍堰,格式<小于參考溫度的比例系數(shù) 大于參考溫度的比例系數(shù)>。
15嗅义、rockchip,thermal-zone
:獲取溫度的thermal-zone
屏歹。
16、opp-microvolt-L*
:電壓(微伏)之碗,格式<target min max>
17蝙眶、clock-latency-ns
:完成變頻需要的時(shí)間,單位:納秒继控。
在RK3399
中械馆,除了配置上述小核的opp table
外,還設(shè)置了大核(cluster1_opp
)武通、gpu(gpu_opp_table)
等的相關(guān)值霹崎。查看命令如下:
root@linaro-alip:/sys/kernel/debug/opp# ls
cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 opp_summary platform-ff9a0000.gpu
root@linaro-alip:/sys/kernel/debug/opp# cat opp_summary
device rate(Hz) target(uV) min(uV) max(uV)
-------------------------------------------------------------------
platform-ff9a0000.gpu
200000000 800000 800000 800000
300000000 800000 800000 800000
400000000 825000 825000 825000
600000000 925000 925000 925000
800000000 1100000 1100000 1100000
cpu4
408000000 800000 800000 1200000
600000000 800000 800000 1200000
816000000 825000 825000 1200000
1008000000 875000 875000 1200000
1200000000 950000 950000 1200000
1416000000 1025000 1025000 1200000
1608000000 1100000 1100000 1200000
1800000000 1200000 1200000 1200000
cpu0
408000000 800000 800000 1200000
600000000 800000 800000 1200000
816000000 850000 850000 1200000
1008000000 925000 925000 1200000
1200000000 1000000 1000000 1200000
1416000000 1125000 1125000 1200000
注:
CPU PVTM(Process Voltage Temperature Monitor)
是一個(gè)位于CPU
附近,能反應(yīng)出不同芯片之間性能差異的模塊冶忱,受工藝尾菇,電壓和溫度 的影響。
參考:
Documentation/devicetree/bindings/cpufreq/cpufreq-rockchip.txt
Documentation/devicetree/bindings/cpufreq/cpufreq-rockchip.txt