news 2026/8/12 17:16:59

15.RK3588最高运行性能配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
15.RK3588最高运行性能配置

1.查询npu版本

root@ATK-DLRK3588:cat /sys/kernel/debug/rknpu/version RKNPU driver: v0.9.8

2.查询npu的负载

root@ATK-DLRK3588:cat /sys/kernel/debug/rknpu/load NPU load: Core0: 0%, Core1: 0%, Core2: 0%,

3.显示或者设置NPU、CPU、DDR运行频率

scaling_frequence.sh

chip_name=0 freq_set_status=0 usage() { echo "USAGE: ./scaling_frequency.sh -c {chip_name} [-h]" echo " -c: chip_name, such as rv1126 / rk3588" echo " -h: Help" } # print_and_compare_result want result print_and_compare_result() { # echo "compare result" echo " try set "$1 echo " query "$2 if [ $1 == $2 ];then echo " Seting Success" else echo " Seting Failed" freq_set_status=-1 fi } # print_not_support_adjust {device} {freq want} {freq want} print_not_support_adjust() { echo "Firmware seems not support seting $1 frequency" echo " wanted "$2 echo " check "$3 } # MAIN FUNCTION HERE # vaild=0 if [ $# == 0 ]; then usage exit 0 fi while getopts "c:dc" arg do case $arg in c) chip_name=$OPTARG ;; h) usage exit 0 ;; ?) usage exit 1 ;; esac done if [ $chip_name == 'rv1126' ]; then seting_strategy=1 CPU_freq=1512000 NPU_freq=934000000 DDR_freq=924000000 elif [ $chip_name == 'rv1109' ]; then seting_strategy=1 CPU_freq=1512000 NPU_freq=594000000 DDR_freq=924000000 elif [ $chip_name == 'rk1808' ]; then seting_strategy=1 # CPU_freq=1512000 CPU_freq=1200000 NPU_freq=792000000 DDR_freq=924000000 elif [ $chip_name == 'rk3399pro' ]; then seting_strategy=2 CPU_freq=1512000 NPU_freq=792000000 DDR_freq=934000000 elif [ $chip_name == 'rk3562' ]; then seting_strategy=6 CPU_freq=2000000 NPU_freq=1000000000 DDR_freq=1560000000 elif [ $chip_name == 'rk3566' ]; then seting_strategy=3 CPU_freq=1800000 NPU_freq=1000000000 DDR_freq=1056000000 elif [ $chip_name == 'rk3568' ]; then seting_strategy=3 CPU_freq=1800000 NPU_freq=1000000000 DDR_freq=1560000000 elif [ $chip_name == 'rk3588' ]; then seting_strategy=4 CPU_freq=2256000 NPU_freq=1000000000 DDR_freq=2112000000 elif [ $chip_name == 'rk3576' ]; then seting_strategy=7 CPU_freq=2016000 NPU_freq=1000000000 DDR_freq=2112000000 elif [ $chip_name == 'rv1106' ]; then seting_strategy=5 CPU_freq=1608000 NPU_freq=500000000 DDR_freq=924000000 elif [ $chip_name == 'rv1103' ]; then seting_strategy=5 CPU_freq=1608000 NPU_freq=500000000 DDR_freq=924000000 else echo "$chip_name not recognize" exit 1 fi echo "Try seting frequency for "${chip_name} echo " Setting strategy as $seting_strategy" echo " NPU seting to "$NPU_freq echo " CPU seting to "$CPU_freq echo " DDR seting to "$DDR_freq case $seting_strategy in 0) echo "seting strategy not implement now" ;; # for rk1808, rv1126, rv1109 1) echo "CPU: seting frequency" echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo $CPU_freq > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed CPU_cur_freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq) print_and_compare_result $CPU_freq $CPU_cur_freq echo "NPU: seting frequency" echo userspace > /sys/class/devfreq/ffbc0000.npu/governor echo $NPU_freq > /sys/class/devfreq/ffbc0000.npu/userspace/set_freq NPU_cur_freq=$(cat /sys/class/devfreq/ffbc0000.npu/cur_freq) print_and_compare_result $NPU_freq $NPU_cur_freq echo "DDR: seting frequency" if [ $chip_name == 'rk1808' ]; then cur_freq=$(cat /sys/kernel/debug/clk/clk_summary | grep pll_dpll | awk '{split($0,a," "); print a[4]}') else cur_freq=$(cat /sys/kernel/debug/clk/clk_summary | grep pll_dpll | awk '{split($0,a," "); print a[5]}') fi DDR_cur_freq="`expr $cur_freq \* 2`" print_not_support_adjust DDR $DDR_freq $DDR_cur_freq ;; # for rk3399pro 2) echo "seting strategy not implement for rk3399pro now" ;; # for rk3566, rk3568 3) echo "CPU: seting frequency" echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor echo $CPU_freq > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed CPU_cur_freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq) print_and_compare_result $CPU_freq $CPU_cur_freq echo "NPU: seting frequency" echo userspace > /sys/class/devfreq/fde40000.npu/governor echo $NPU_freq > /sys/class/devfreq/fde40000.npu/userspace/set_freq NPU_cur_freq=$(cat /sys/devices/platform/fde40000.npu/devfreq/fde40000.npu/cur_freq) print_and_compare_result $NPU_freq $NPU_cur_freq echo "DDR: seting frequency" echo userspace > /sys/class/devfreq/dmc/governor echo $DDR_freq > /sys/class/devfreq/dmc/userspace/set_freq DDR_cur_freq=$(cat /sys/class/devfreq/dmc/cur_freq) print_and_compare_result $DDR_freq $DDR_cur_freq ;; # for rk3588 4) echo "CPU: seting frequency" echo " Core0" echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor echo 1800000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed CPU_cur_freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq) print_and_compare_result 1800000 $CPU_cur_freq echo " Core4" echo userspace > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor echo $CPU_freq > /sys/devices/system/cpu/cpufreq/policy4/scaling_setspeed CPU_cur_freq=$(cat /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_cur_freq) print_and_compare_result $CPU_freq $CPU_cur_freq echo " Core6" echo userspace > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor echo $CPU_freq > /sys/devices/system/cpu/cpufreq/policy6/scaling_setspeed CPU_cur_freq=$(cat /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_cur_freq) print_and_compare_result $CPU_freq $CPU_cur_freq echo "NPU: seting frequency" if [ -e /sys/class/devfreq/fdab0000.npu/governor ];then echo userspace > /sys/class/devfreq/fdab0000.npu/governor echo $NPU_freq > /sys/class/devfreq/fdab0000.npu/userspace/set_freq NPU_cur_freq=$(cat /sys/class/devfreq/fdab0000.npu/cur_freq) elif [ -e /sys/class/devfreq/devfreq0/governor ];then echo performance > /sys/class/devfreq/devfreq0/governor NPU_cur_freq=$(cat /sys/class/devfreq/devfreq0/cur_freq) else NPU_cur_freq=$(cat /sys/kernel/debug/clk/scmi_clk_npu/clk_rate) fi print_not_support_adjust NPU $NPU_freq $NPU_cur_freq echo "DDR: seting frequency" if [ -e /sys/class/devfreq/dmc/governor ];then echo userspace > /sys/class/devfreq/dmc/governor echo $DDR_freq > /sys/class/devfreq/dmc/userspace/set_freq DDR_cur_freq=$(cat /sys/class/devfreq/dmc/cur_freq) print_and_compare_result $DDR_freq $DDR_cur_freq else print_not_support_adjust DDR $DDR_freq $DDR_cur_freq=$(cat /sys/kernel/debug/clk/clk_summary | grep scmi_clk_ddr) echo $DDR_cur_freq fi ;; # rv1106, rv1103 5) echo "CPU: seting frequency" echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor echo $CPU_freq > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed CPU_cur_freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq) print_and_compare_result $CPU_freq $CPU_cur_freq echo "NPU: seting frequency" # echo " no strategy to seting DDR frequency" # echo $NPU_freq > /sys/kernel/debug/clk/aclk_npu_root/clk_rate echo $NPU_freq > /sys/kernel/debug/clk/clk_500m_src/clk_rate NPU_cur_freq=$(cat /sys/kernel/debug/clk/clk_summary | grep aclk_npu_root | awk '{split($0,a," "); print a[5]}') print_and_compare_result $NPU_freq $NPU_cur_freq echo "DDR: seting frequency" echo " no strategy to seting DDR frequency" cur_freq=$(cat /sys/kernel/debug/clk/clk_summary | grep clk_core_ddrc_src | awk '{split($0,a," "); print a[5]}') DDR_cur_freq="`expr $cur_freq \* 2`" print_and_compare_result $DDR_freq $DDR_cur_freq ;; # rk3562 6) echo "CPU: seting frequency" echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor echo $CPU_freq > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed CPU_cur_freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq) print_and_compare_result $CPU_freq $CPU_cur_freq echo "NPU: seting frequency" echo userspace > /sys/devices/platform/ff300000.npu/devfreq/ff300000.npu/governor echo $NPU_freq > /sys/devices/platform/ff300000.npu/devfreq/ff300000.npu/userspace/set_freq NPU_cur_freq=$(cat /sys/class/devfreq/ff300000.npu/cur_freq) print_and_compare_result $NPU_freq $NPU_cur_freq echo "DDR: seting frequency" if [ -e /sys/class/devfreq/dmc/governor ];then echo userspace > /sys/class/devfreq/dmc/governor echo $DDR_freq > /sys/class/devfreq/dmc/userspace/set_freq DDR_cur_freq=$(cat /sys/class/devfreq/dmc/cur_freq) else DDR_cur_freq=$(cat /sys/kernel/debug/clk/clk_summary | grep scmi_clk_ddr | awk '{split($0,a," "); print a[5]}') fi print_not_support_adjust DDR $DDR_freq $DDR_cur_freq ;; # rk3576 7) echo "CPU: seting frequency" echo " Core0" echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor echo 1800000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed CPU_cur_freq=$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq) print_and_compare_result 1800000 $CPU_cur_freq echo " Core4" echo userspace > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor echo $CPU_freq > /sys/devices/system/cpu/cpufreq/policy4/scaling_setspeed CPU_cur_freq=$(cat /sys/devices/system/cpu/cpufreq/policy4/scaling_cur_freq) print_and_compare_result $CPU_freq $CPU_cur_freq echo "NPU: seting frequency" echo userspace > /sys/devices/platform/27700000.npu/devfreq/27700000.npu/governor echo $NPU_freq > /sys/class/devfreq/27700000.npu/userspace/set_freq NPU_cur_freq=$(cat /sys/class/devfreq/27700000.npu/cur_freq) print_and_compare_result $NPU_freq $NPU_cur_freq echo "DDR: seting frequency" if [ -e /sys/class/devfreq/dmc/governor ];then echo userspace > /sys/class/devfreq/dmc/governor echo $DDR_freq > /sys/class/devfreq/dmc/userspace/set_freq DDR_cur_freq=$(cat /sys/class/devfreq/dmc/cur_freq) else DDR_cur_freq=$(cat /sys/kernel/debug/clk/clk_summary | grep scmi_clk_ddr | awk '{split($0,a," "); print a[5]}') fi print_not_support_adjust DDR $DDR_freq $DDR_cur_freq ;; *) echo "seting strategy not implement now" ;; esac echo "freq set" > ./freq_set_status echo "CPU: "$CPU_freq >> ./freq_set_status echo "NPU: "$NPU_freq >> ./freq_set_status echo "DDR: "$DDR_freq >> ./freq_set_status echo "freq query" >> ./freq_set_status echo "CPU: "$CPU_cur_freq >> ./freq_set_status echo "NPU: "$NPU_cur_freq >> ./freq_set_status echo "DDR: "$DDR_cur_freq >> ./freq_set_status if [ $freq_set_status == 0 ];then echo "Seting Success" >> ./freq_set_status else echo "Seting Failed" >> ./freq_set_status fi

3.1设置方法

./scaling_frequency.sh -h ./scaling_frequency.sh: illegal option -- h USAGE: ./scaling_frequency.sh -c {chip_name} [-h] -c: chip_name, such as rv1126 / rk3588 -h: Help

3.2 RK3588 一键拉满全硬件频率

./scaling_frequency.sh -c rk3588
执行后脚本自动完成:
  1. CPU 小核 A55 (0-3)、大核 A76 (4-7) 全部切换userspace,设到最高频
  2. NPU 切换 userspace,锁定满频
  3. DDR 内存控制器锁定最高带宽频点
  4. 自动读取当前频率,打印Setting Success校验结果

3.3 RK3588 脚本默认频点(单位 KHz)

脚本内置 RK3588 预设:
  • A55 小核:2016000 (2.016GHz)
  • A76 大核:2304000 (2.304GHz)
  • NPU:1000000000 (1GHz)
  • DDR:2112000000 (2112MHz)
3.4 验证 CPU 是否定频成功
#查看小核当前频率 cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq #查看大核当前频率 cat /sys/devices/system/cpu/cpufreq/policy6/cpuinfo_cur_freq #确认调频策略为userspace cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

3.5 验证 NPU 频率

cat /sys/class/devfreq/fdab0000.npu/cur_freq

3.6 验证 DDR 频率

cat /sys/class/devfreq/dmc/cur_freq

3.7 恢复系统自动变频

脚本仅设置手动定频,重启失效;

不重启手动恢复自动调度:

#CPU恢复动态调频(interactive/ondemand) echo interactive | sudo tee /sys/devices/system/cpu/cpufreq/policy*/scaling_governor #NPU恢复自动变频 echo dmc_ondemand | sudo tee /sys/class/devfreq/fdab0000.npu/governor #DDR恢复自动变频 echo dmc_ondemand | sudo tee /sys/class/devfreq/dmc/governor
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/12 17:15:46

AI技术术语解析:从LLM、RAG到Agent,一文读懂大模型核心概念与应用

1. 引言:当技术黑话成为交流壁垒 最近在几个技术社区和项目讨论区里,我经常看到一种现象:大家讨论AI项目或者分享经验时,会不自觉地蹦出一些“行话”。这些词,圈内人一听就懂,甚至觉得是“专业”的体现&…

作者头像 李华
网站建设 2026/8/12 17:14:10

第 12 章:原生服务

Android 的系统功能并非由单一巨型进程提供。system_server承载基于 Java 实现的系统服务(ActivityManagerService、WindowManagerService、PackageManagerService以及数十个其他服务),同时平台大量核心功能运行在由 C++ 编写的独立原生进程中。这些原生服务承担各类工作:屏…

作者头像 李华
网站建设 2026/8/12 17:13:18

C#机器视觉入门:从环境搭建到实时图像处理实战

1. 从“机器视觉”到“C#”:为什么选择它作为你的第一块敲门砖?最近在社区里,看到不少朋友在讨论“机器视觉就业太难了”。确实,这个领域听起来高大上,涉及算法、光学、硬件,门槛不低。但我想说的是&#x…

作者头像 李华
网站建设 2026/8/12 17:12:26

电子合同打官司法院认可吗?企业这样留证才稳

摘要:电子合同的法律效力,关键不在于"电子"还是"纸质"的载体之争,而在于能否构建一条完整的证据链——即清晰证明"谁、在什么时间、签了什么、签完没改过"。本文围绕身份认证、意愿确认、时间戳、防篡改和存证…

作者头像 李华
网站建设 2026/8/12 17:09:21

革命性视频自动化:JianYingApi如何颠覆企业内容生产范式

革命性视频自动化:JianYingApi如何颠覆企业内容生产范式 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 在数字化内容生产进入工业化时代的今天,企业面临着一个…

作者头像 李华