功耗调整指引


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 1200000
    scaling_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