功耗调整指引
1. 打开/关闭 组件¶
1.1. 可选的组件¶
芯片上可选使能的组件有 : GMAC 、USB 和 SATA
1.2. GMAC¶
需要在U-Boot及Linux Kernel进行调整才能完全关闭该组件
1.2.1. 调整U-Boot¶
Step1. 取消SSTAR GMAC的选项
1.2.2. 调整Linux Kernel¶
Step1.取消SSTAR GMAC的选项
Step2. 取消Networking support的选项
1.3. USB¶
需要在U-Boot及Linux Kernel进行调整才能完全关闭该组件
1.3.1. 调整U-Boot¶
Step1. 取消MSTAR USB的选项
1.3.2. 调整Linux Kernel¶
Step1. 取消USB选项
1.4. SATA¶
调整Kernel Config就可以关闭 SATA组件
Step1. 取消Kernel ATA Support
Step2. 取消SStar SATA HOST
2. 组件时钟频率配置¶
2.1. CPU 时钟频率配置¶
2.1.1. Clock scaling 配置¶
-
节点
在/sys/devices/system/cpu/cpufreq/policy0节点下,有如下的子节点,可以用来查看和调节CPU频率。如无特殊说明,以下的频率单位都为kHz。
节点 作用 cpuinfo_cur_freq CPU当前正在运行的工作频率,一般与scaling_cur_freq相等 cpuinfo_max_freq CPU能够支持的最高工作频率 cpuinfo_min_freq CPU能够支持的最低工作频率 scaling_cur_freq 调节器决定的当前CPU工作频率 scaling_max_freq 调节器支持的最高CPU工作频率 scaling_min_freq 调节器支持的最低CPU工作频率 scaling_available_frequencies 调节器支持的频率档位:
600000 800000 900000 1000000 1100000 1200000scaling_setspeed 如果选择的调节策略为userspace,那么可以设置CPU的工作主频为某个值 scaling_available_governors 调节策略:
1. performance:不考虑耗电,只用最高频率
2. powersave:通常以最低频率运行
3. userspace:可以在用户空间手动调节频率
4. ondemand:定期检查负载,根据负载来调节频率scaling_governor 查看当前调节策略以及设定调节策略,默认为ondemand -
约束
1、scaling_min_freq必须小于等于scaling_max_freq
2、scaling_min_freq必须大于等于cpuinfo_min_freq
3、scaling_max_freq必须小于等于cpuinfo_max_freq
4、scaling_setspeed必须在scaling_min_freq和scaling_max_freq范围内
-
查看
通过以下命令查看CPU当前工作频率:
# cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq
-
设定
通过以下命令先设定userspace调节策略:
# echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
通过以下命令查看调节器支持的最高和最低频率:(设定的频率要在这个范围内)
# cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq # cat /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
通过以下命令设置调节器的当前频率:(此处以1000MHz为例,设定完后cpuinfo_cur_freq与之相同)
# echo 1000000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
2.1.2. CPU温度¶
通过以下命令查看CPU温度:
# cat /sys/devices/virtual/mstar/msys/TEMP_R
结果仅供参考,会存在一定的误差(5摄氏度左右)。
2.2. ISP时钟频率配置¶
2.2.1. ISP时钟频率档位¶
600000000 533000000 480000000 432000000 384000000 320000000 240000000
2.2.2. ISP时钟频率配置¶
在isp.ko和ispmid.ko加载之后,开启视频处理任务之前,即可通过如下命令设置相关频率。
获取当前ISP clock:
# cat /sys/devices/virtual/mstar/isp0/isp_clk
设置ISP clock:(以240MHz为例)
# echo 240000000 > /sys/devices/virtual/mstar/isp0/isp_clk
2.2.3. 约束¶
以上的设置应该在模块加载完成之后操作模块功能之前设置,才能正确的生效。
2.3. 编解码时钟频率配置¶
2.3.1. 编解码器时钟频率档位¶
708000000 672000000 636000000 576000000 504000000 456000000 408000000 348000000 600000000 533000000 480000000 432000000 384000000 320000000 288000000
2.3.2. 编解码器时钟频率配置¶
在mhal.ko加载之后,开启视频编解码处理任务之前,即可通过如下命令设置相关频率。
vdec Firmware跑在一颗独立的CPU(Vcore),且HW IP与ven arbiter clock分别单独控制,因此有三个clock: VCore(SW),HW IP,ven arbiter(AXI),分别透过ven_clock, ven_clock_2nd, ven_clock_axi控制。
读取当前的clock rate:
1. # cat /sys/devices/virtual/mstar/venc/ven_clock 2. # cat /sys/devices/virtual/mstar/venc/ven_clock_2nd 3. # cat /sys/devices/virtual/mstar/venc/ven_clock_axi
设置clock rate:(以320MHz为例)
1. # echo 320000000 > /sys/devices/virtual/mstar/venc/ven_clock 2. # echo 320000000 > /sys/devices/virtual/mstar/venc/ven_clock_2nd 3. # echo 320000000 > /sys/devices/virtual/mstar/venc/ven_clock_axi
2.3.3. 约束¶
以上的设置应该在模块加载完成之后操作模块功能之前设置,并在执行模块时才能正确的生效。
当ven_clock, ven_clock_2nd, ven_clock_axi其中一个设定为 708000000/ 672000000/ 636000000/ 576000000/504000000/456000000/408000000/348000000时,另外两个只能选择相同的clock或者除此之外的其它clock,即ven_clock, ven_clock_2nd和ven_clock_axi不能同时为其中的不同值。
2.4. SCL 时钟频率配置¶
2.4.1. scaler时钟频率档位¶
600000000 533000000 480000000 432000000 384000000 320000000 240000000
2.4.2. scaler时钟频率配置¶
在mhal.ko加载之后,开启视频处理任务之前,即可通过如下命令设置相关频率。
读取当前的clock rate:
# cat /sys/devices/virtual/mstar/mscl/clk
设置clock rate:(以384MHz为例)
# echo 384000000 > /sys/devices/virtual/mstar/mscl/clk
2.4.3. 约束¶
以上的设置应该在模块加载完成之后操作模块功能之前设置,并在执行模块时才能正确的生效。
2.5. IPU 时钟频率配置¶
2.5.1. IPU时钟频率档位¶
1500MHz 1400MHz 1300MHz 1200MHz 1100MHz 1000MHz 900MHz 800MHz 700MHz 600MHz 500MHz 400MHz 300MHz 200MHz 150MHz
2.5.2. IPU时钟频率配置¶
mi_ipu.ko加载后,可以通过写时钟频率(单位MHz)配置IPU时钟频率。
读当前的clock rate:
# cat /sys/dla/clk_rate
设置clock rate:(以900MHz为例)
# echo 900 > /sys/dla/clk_rate
2.6. JPE时钟频率配置¶
2.6.1. JPE时钟频率档位¶
480000000 432000000 384000000 320000000 288000000 216000000
2.6.2. JPE时钟频率配置¶
在mhal.ko加载之后,开启图片解码任务之后,即可通过如下命令设置相关频率。
读取当前的clock rate:
# cat /sys/devices/virtual/mstar/jpe/jpe_clock
设置clock rate:(以320MHz为例,以下的0和1分别表示不同的device)
# echo 320000000 0 > /sys/devices/virtual/mstar/jpe/jpe_clock # echo 320000000 1 > /sys/devices/virtual/mstar/jpe/jpe_clock
2.7. JPD 时钟频率配置¶
2.7.1. JPD时钟频率档位¶
600000000 533000000 480000000 432000000 384000000 288000000
2.7.2. JPD时钟频率配置¶
在mhal.ko加载之后,开启图片解码任务之后,即可通过如下命令设置相关频率。
读取当前的clock rate:
# cat /sys/devices/virtual/mstar/jpd/clk
设置clock rate:
# echo [clk] [dev_id] > /sys/devices/virtual/mstar/jpd/clk
2.8. LDC 时钟频率配置¶
2.8.1. LDC 时钟频率档位¶
600000000 480000000 432000000 384000000 320000000 288000000 246800000 216000000
2.8.2. LDC时钟频率配置¶
读取当前clock rate:
1. cat /sys/devices/virtual/mstar/ldc/clk 2. cat /sys/devices/virtual/mstar/ldc1/clk
设置clock rate(以384MHz为例):
1. echo 384000000 > /sys/devices/virtual/mstar/ldc/clk 2. echo 384000000 > /sys/devices/virtual/mstar/ldc1/clk
2.9. HDMI 时钟频率配置¶
2.9.1. HDMI时钟频率档位¶
目前只支持432M clk
# echo disp432 1 4320000000 > /sys/devices/virtual/mstar/mhdmitx/clk
2.9.2. HDMI时钟频率配置¶
在mhal.ko加载之后,即可通过如下命令设置相关频率。
关闭时钟: (disp打开后不能关闭该clock)
# echo disp432 0 4320000000 > /sys/devices/virtual/mstar/mhdmitx/clk
开启时钟:
# echo disp432 1 4320000000 > /sys/devices/virtual/mstar/mhdmitx/clk