功耗调整指引


1. 打开/关闭 组件

1.1. 可选的组件

在 Maruko 上可选使能的组件有: ETH、USB

1.2. ETH

需要在U-Boot及Linux Kernel进行调整才能完全关闭该组件。

1.2.1. 调整U-Boot

Step1. 取消MSTAR EMAC的选项

1.2.2. 调整Linux Kernel

Step1. 取消EMAC的选项

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选项

2. 组件时钟频率配置

2.1. CPU 时钟频率配置

2.1.1. Voltage scaling 配置

Core Power :

cat /sys/devices/system/voltage/core_power/voltage_current

注:VID driver尚未Merge。

Clock scaling 配置:

  • Read current CPU frequency

    cat /sys/devices/system/cpu/cpufreq/cpufreq_testout
    
  • Update CPU frequency

    echo x > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    
    echo x > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    
    x = 600000, 800000, 1000000, 1200000
    

    举例:

    echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    
    echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    

    默认min cpufreq = 600 MHz:

    # cat /sys/devices/system/cpu/cpufreq/cpufreq_testout
    600016000
    

    如修改min cpufreq为1000MHz:

    # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    1000000
    
    # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    1200000
    
    # cat /sys/devices/system/cpu/cpufreq/cpufreq_testout
    1000032000
    

2.2. ISP 时钟频率配置

2.2.1. ISP配置示例

在isp.ko、ispmid.ko加载之后,开启视频处理任务之前,即可通过如下命令设置相关频率:

读取目前的isp clock rate,可通过以下命令取得:

cat /sys/devices/virtual/mstar/isp0/isp_clk

设置isp clock rate,可通过以下命令设置:

echo 320000000 > /sys/class/mstar/isp0/isp_clk

2.2.2. ISP时钟频率档位

  • 320000000 (320Mhz)

  • 288000000 (288Mhz)

  • 216000000 (216Mhz)

  • 192000000 (192Mhz)

  • 172000000 (172Mhz)

  • 123000000 (123Mhz)

  • 72000000 (72Mhz)

2.2.3. 约束

以上的设置应该在模块加载完成之后操作模块功能之前设置,才能正确的生效。

2.3. VCODEC时钟频率配置

2.3.1. VCODEC配置示例

在开启视频编解码处理任务之前,即可通过如下命令设置相关频率:

Maruko Vcodec Firmware跑在一颗独立的Cpu(Vcpu),且HW ip与ven arbiter clk分别单独控制,因此有三个Clk: Vcpu(SW)、HW ip、ven arbiter(AXI),分别透过ven_clock、ven_clock_2nd、ven_clock_axi控制。

读取目前的clock rate,可通过以下命令取得:

cat /sys/devices/virtual/mstar/venc/ven_clock

cat /sys/devices/virtual/mstar/venc/ven_clock_2nd

cat /sys/devices/virtual/mstar/venc/ven_clock_axi

cat /sys/devices/virtual/mstar/venc/ven_clock_scdn

设置clock rate,可通过以下命令设置:

echo 320000000 > /sys/devices/virtual/mstar/venc/ven_clock

echo 320000000 > /sys/devices/virtual/mstar/venc/ven_clock_2nd

echo 320000000 > /sys/devices/virtual/mstar/venc/ven_clock_axi

echo 320000000 > /sys/devices/virtual/mstar/venc/ven_clock_scdn

2.3.2. 编解码器时钟频率档位

  • ven_clock

    -------VENC Device [0]---------
    384000000 <--
    192000000
    240000000
    216000000
    320000000
    288000000
    
  • ven_clock_2nd

    -------VENC Device [0]---------
    192000000
    240000000
    216000000
    320000000 <--
    288000000
    
  • ven_clock_axi

    -------VENC Device [0]---------
    192000000
    240000000
    216000000
    320000000 <--
    288000000
    

2.3.3. 约束

  1. Clock 只允许在 加载.ko之后、跑应用之前 修改。

  2. 建议ven_clock_2nd/ ven_clock_axi修改保持一致,ven_clock >= ven_clock_2nd

2.4. SCL 时钟频率配置

2.4.1. scaler时钟频率配置

在开启视频处理任务之前,即可通过如下命令设置相关频率:

  • 读取目前的clock rate,可通过以下命令取得

    cat /sys/devices/virtual/mstar/mscl/clk
    
  • 设置clock rate,可通过以下命令设置

    echo 320000000 > /sys/devices/virtual/mstar/mscl/clk
    

2.4.2. scaler时钟频率档位

  • 320000000 <-------

  • 216000000

  • 192000000

  • 384000000 (OD)

  • 288000000

  • 172000000

  • 123400000

2.4.3. 约束

以上的设置应该在模块加载完成之后操作模块功能之前设置,并在执行模块时才能正确的生效。

2.5. JPEG 时钟频率配置

2.5.1. JPEG时钟频率配置

在开启视频处理任务之前,即可通过如下命令设置相关频率:

  • 读取目前的clock rate,可通过以下命令取得:

    cat /sys/class/mstar/jpe/jpe_clock
    
  • 设置clock rate,可通过以下命令设置:

    echo 320000000 > /sys/class/mstar/jpe/jpe_clock
    

2.5.2. JPEG时钟频率档位

-------Device 0---------
288000000
123400000
384000000 <--
320000000
172000000
216000000

2.6. IVE 时钟频率配置

2.6.1. IVE时钟频率配置

在开启视频处理任务之前,即可通过如下命令设置相关频率:

  • 读取目前的clock rate,可通过以下命令取得(Bank 1038 h6a [12:8] reg_ckg_ive)

    /customer/riu_r 1038 6a
    
  • 设置clock rate,可通过以下命令设置

    /customer/riu_w 1038 6a XXYY
    
    XX : IVE clock
    
    YY : origin value (use riu_r to check this value)
    

2.6.2. IVE时钟频率档位

  • XX=00001 : disable clock

  • XX=00000 : 432 MHz

  • XX=00100 : 172 MHz

  • XX=01000 : 480 MHz

  • XX=01100 : 123 MHz

  • XX=10000 : 288 MHz

  • XX=10100 : 320 MHz

  • XX=11000 : 384 MHz

  • XX=11100 : 240 MHz

2.7. IPU 时钟频率配置

2.7.1. IPU时钟频率配置

通过写时钟频率(单位MHz)到/sys/dla/clk_rate配置IPU时钟频率。

举例:echo 900 > /sys/dla/clk_rate

2.7.2. IPU时钟频率档位

# cat /sys/dla/freq
current ipu clock frequency: 800MHz
available frequency:
900MHz
800MHz
700MHz
600MHz
500MHz
400MHz
300MHz

2.8. 观察cpu的温度

cat /sys/devices/virtual/mstar/msys/TEMP_R

结果仅供参考,因为误差可以达到5摄氏度。