SSU_功耗调整指南


1. Uboot menuconfig可开关模块说明

1.1. GMAC(EMAC)

关闭gmac:

Command line interface → SigmaStar drivers → SSTAR GMAC → SigmaStar GMAC

关闭ephy:

Command line interface → Device Drivers → Ethernet PHY(physical media interface) support → SigmaStar Ethernet PHYs support

1.2. USB

取消USB support选项:

Device Drivers → USB support

1.3. DISP

取消bootlogo的选项:

Command line interface → SigmaStar common commands → bootlogo

说明:bootlogo主要包括MOP模块、DISP模块,uboot下的disp只有在bootlogo有编译,并且bootcmd有配置开启bootlogo的时候才会显示bootlogo和产生功耗。

2. Linux kernel menuconfig可开关模块说明

2.1. CPU (Quad Core)

2.1.1. 关闭SMP

2.1.1.1. 32-bit linux kernel

menuconfig → "Kernel Features" → "Symmetric Multi-Processing"

关闭CONFIG_SMP就可以关闭多核功能,只跑单核了

2.1.1.2. 64-bit linux kernel

Menuconfig → "Device Drivers" → "SOC (System On Chip) specific Drivers" → "Sigmastar SOC drivers" → "Not support SMP, just running one core"

开启CONFIG_NO_SMP,就会关闭SMP,只跑单核。

2.1.2. 通过CPU hotplug功能,动态开启和关闭多核

menuconfig → "Kernel Features" → "Support for hot-pluggable CPUs"

开启CONFIG_HOTPLUG_CPU后,就可以通过echo sysfs节点来动态的开启/关闭 CPU0之外的CPU核了。

CPU1, 2, 3支持hotplug,可以通过下列命令进行开关:

  • 开核

    echo 0 > /sys/devices/system/cpu/cpu<N>/online
    
  • 关核

    echo 1 > /sys/devices/system/cpu/cpu<N>/online
    

2.1.3. CPU DVFS

开启DVFS后,可以动态的调节CPU的工作频率。

注意:开启DVFS功能,需要板子的支持。

2.1.3.1. 开启IDAC driver

menuconfig → "Device Drivers" → "SStar SoC platform drivers" → "Sigmastar Voltage IDAC Control"

注意:"Sigmastar Voltage IDAC Control Step By Step"也要开启

开启CONFIG_SSTAR_VOLTAGE_IDAC_CTRL和CONFIG_SSTAR_VOLTAGE_IDAC_STEP_BY_STEP后,DVFS就可以依据当前CPU工作频率,调整CPU的工作电压了。

2.1.3.2. 开启DVFS

menuconfig → "Device Drivers" → "SStar SoC platform drivers" → "Mstar CPU frequency scaling driver"

2.2. RISC

Riscv的启动在IPL中,所以是否运行RISCV取决于IPL版本,带RISCV的IPL binary名字中有RISCV字段。

Linux kernel中和RISCV通信的RPMsg driver开关如下:

menuconfig → "Device Drivers" → "SStar SoC platform drivers" → "SSTAR riscv virtio driverl"

如果不需要RISCV,可以关闭这个选项,关闭CONFIG_SSTAR_RISCV_VIRTIO后,linux无法通过RPMsg和RISCV。

2.3. GPU

开启/关闭GPU driver:

在 Alkaid/kernel 下 make menuconfig,依次选择: → Device Drivers → Graphics support → ARM GPU Configuration

可以选择Y/M/N。如果选择 M,则会在 kernel/modules 下生成 mali_kbase.ko,可以直接在kernel下insmod,无需其他依赖。

2.4. IPU

Project下make menuconfig,选择IPU编译开关:

→ Sdk Config → Interface Compile Config → ipu

关闭IPU编译后将不会编译mi_ipu.ko。

2.5. VCODEC

Step1. Alkaid menuconfig → Sdk Config

Step2. Alkaid menuconfig → Sdk Config → Interface Compile Config

Step3. 取消vcodec选项

Step4. 取消venc选项

Step5. 取消vdec选项

约束:

  1. 仅venc/vdec/jpe模块均不需要使用时才可取消vcodec选项(Step3)

  2. 仅venc/jpe模块均不需要使用时才可取消venc选项(Step5)

2.6. USB

取消USB support选项:

Device Drivers → USB support

2.7. GMAC + EMAC

关闭gmac:

Command line interface → Device Drivers → SStar SoC platform drivers → SSTAR GMAC → SSTAR GMAC

关闭ephy:

Command line interface → Device Drivers → SStar SoC platform drivers → SStar 10/100 PHYs

2.8. Audio

Step1. Alkaid menuconfig → Kernel Configuration

Step2. Alkaid menuconfig → Kernel Configuration → Device Drivers

Step3. 打开Alkaid menuconfig → Kernel Configuration → Device Drivers → Sound card support选项

Step4. 打开Alkaid menuconfig → Kernel Configuration → Device Drivers → Sound card support → Advanced Linux Sound Architecture选项

Step5. 打开Alkaid menuconfig → Kernel Configuration → Device Drivers → Sound card support → Advanced Linux Sound Architecture → ALSA for Soc audio support选项

Step6. 打开Alkaid menuconfig → Kernel Configuration → Device Drivers → Sound card support → Advanced Linux Sound Architecture → ALSA for Soc audio support → Asoc support for SigmaStar选项

Step7. 打开Alkaid menuconfig → Kernel Configuration → Device Drivers → Sound card support → Advanced Linux Sound Architecture → ALSA for Soc audio support → Asoc support for SigmaStar → CODEC drivers下SigmaStar dummy CODEC driver选项

2.9. EMMC

取消EMMC driver选项:

Alkaid/kernel下menuconfig

Device Drivers → SStar SoC platform drivers → EMMC driver

2.10. SDIO

取消SStar SD/MMC Card Interface Support选项:

Alkaid/kernel下menuconfig

Device Drivers → SStar SoC platform drivers → SStar SD/MMC Card Interface Support

2.11. HDMI RX

取消hdmirx 的选项:

Alkaid/project下menuconfig

Sdk Config → Interface Compile Config → hdmirx

说明:hdmirx 没有不像其他的ip有单独的mhal,rx的mhal 集成在impl下,因此不需要其他操作。

2.12. DISP (SCL + HVP + MOP + GOP + DISP)

Step1. 取消drm的选项

Alkaid/project下menuconfig

Sdk Config → Osdk Compile Config → drm

说明:drm配置包含了disp模块、mop模块、rgn模块

Step2. 取消hvp的选项

Alkaid/project下menuconfig

Sdk Config → Interface Compile Config → hvp

说明:在hvp → scl(frame mode)使用场景下,无需打开drm编译选项,在hvp → mop(realtime mode)使用场景下,需要打开drm编译选项。

Step3. 取消scl的选项

Alkaid/project下menuconfig

Sdk Config → Interface Compile Config → scl

关于kernel下如何完全关闭disp所产生的功耗,需要结合应用场景来看:

  • 硬件设计

    disp、mop、gop、hvp、jpd这几个模块都依赖于disp power,但ven-gop、jpe-gop和scl-gop不依赖于disp power。

  • 软件设计

    Kernel下的disp只有当bootlogo不开启,且kernel下的drm、hvp、jpd这几个编译选项也都不打开的时候,才会完全关闭disp power。即在不使用hdmi rx,也不使用display和jpeg decode的场景下才会完全不产生disp功耗。