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选项
约束:
-
仅venc/vdec/jpe模块均不需要使用时才可取消vcodec选项(Step3)
-
仅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功耗。