一.CPU相关命令
1. 如何CPU定频
非大小核平台,执行如下命令:
/* 切换governor到userspace */
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
/* 设置216MHz */
echo 216000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspee
大小核平台,执行如下命令:
/* 切换小核governor到userspace */
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
/* 设置小核216MHz */
echo 216000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
/* 切换大核governor到userspace */
echo userspace > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
/* 设置大核408MHz */
echo 408000 > /sys/devices/system/cpu/cpufreq/policy4/scaling_setspeed
2. 如何查看当前CPU频率
非大小核平台,执行如下命令:
/* 方法一:cpufreq的用户态接口 */
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
/* 方法二:clock debug接口 */
cat /sys/kernel/debug/clk/armclk/clk_rate
大小核平台,执行如下命令:
/* 方法一:cpufreq 的用户态接口 */
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq /* 小核频率*/
cat /sys/devices/system/cpu/cpufreq/policy4/scaling_cur_freq /* 大核频率*/
/* 方法二:clock debug 接口 */
cat /sys/kernel/debug/clk/armclkl/clk_rate /* 小核频率 */
cat /sys/kernel/debug/clk/armclkb/clk_rate /* 大核频率 */
3. 如何查看当前CPU电压
非大小核平台,执行如下命令:
/* 不一定是vdd_core,根据实际的regulator配置修改 */
cat /sys/kernel/debug/regulator/vdd_core/voltage
大小核平台,执行如下命令:
/* 不一定是vdd_core_l和vdd_core_b,根据实际的regulator配置修改*/
cat /sys/kernel/debug/regulator/vdd_core_l/voltage /* 小核电压*/
cat /sys/kernel/debug/regulator/vdd_core_b/voltage /* 大核电压*/
4. 如何单独调频调压
注意:升频需要先调压再调频, 降频需要先调频再调压。
修改CPU定频,CPU调频通过 clock 的 debug 接口设置频率,举例如下:
/* 非大小核平台,比如RK3288,设置216MHz */:
echo 216000000 > /sys/kernel/debug/clk/armclk/clk_rate /* 设置频率*/
cat /sys/kernel/debug/clk/armclkl/clk_rate /* 查看频率 */
/* 大小核平台,比如 RK3399,小核设置 216MHz,大核设置 408Mhz */
echo 216000000 > /sys/kernel/debug/clk/armclkl/clk_rate /* 设置小核频率*/
cat /sys/kernel/debug/clk/armclkl/clk_rate /* 查看小核频率*/
echo 408000000 > /sys/kernel/debug/clk/armclkb/clk_rate /* 设置大核频率*/
cat /sys/kernel/debug/clk/armclkb/clk_rate /* 查看大核频率*/
CPU 调压,通过 regulator 的 debug 接口设置电压,举例如下:/*非大小核平台,比如 RK3288,设置 950mV,不一定是 vdd_core,根据实际的regulator配置修改*/
echo 950000 > /sys/kernel/debug/regulator/vdd_core/voltage /* 设置电压*/
cat /sys/kernel/debug/regulator/vdd_core/voltage /* 查看电压*/
/*大小核平台,比如 RK3399,小核设置 950mV,大核设置 1000mV,不一定是vdd_core_l 和vdd_core_b,根据实际的 regulator 配置修改*/
echo 950000 > /sys/kernel/debug/regulator/vdd_core_l/voltage /* 设置小核电压*/
cat /sys/kernel/debug/regulator/vdd_core_l/voltage /* 查看小核电压*/
echo 950000 > /sys/kernel/debug/regulator/vdd_core_b/voltage /* 设置大核电压*/
cat /sys/kernel/debug/regulator/vdd_core_b/voltage /* 查看大核电压*/
5. 如何查看CPU温度
cat /sys/class/thermal/thermal_zone0/temp
6. 如何查看频率电压表
cat /sys/kernel/debug/opp/opp_summary
7. 相关文档
- Android SDK
RKDocs\common\DVFS\Rockchip_Developer_Guide_CPUFreq_CN
- Linux SDK
docs\cn\Common\DVFS\Rockchip_Developer_Guide_CPUFreq_CN
二.GPU相关命令
1. 如何GPU定频
/* 切换到userspace,不一定是ff400000.gpu,根据不同的平台修改*/
echo userspace > /sys/class/devfreq/ff400000.gpu/governor
/* 设置400MHz */
echo 400000000 > /sys/class/devfreq/ff400000.gpu/userspace/set_freq
/* 查看当前频率 */
cat /sys/class/devfreq/ff400000.gpu/cur_freq
2. 如何查看当前GPU频率
/* 方法一:devfreq的用户态接口,不一定是ff400000.gpu,根据不同的平台修改*/
cat /sys/class/devfreq/ff400000.gpu/cur_freq
/* 方法二:clock debug接口,不一定是aclk_gpu,根据实际的clock配置修改*/
cat /sys/kernel/debug/clk/aclk_gpu/clk_rate
3. 如何查看当前GPU电压
/* 不一定是vdd_logic,根据实际的regulator配置修改 */
cat /sys/kernel/debug/regulator/vdd_logic/voltage
4. 如何单独调频调压
注意:升频需要先调压再调频, 降频需要先调频再调压。
/* 关闭自动变频,不一定是ff400000.gpu,根据不同的平台修改 */
echo userspace > /sys/class/devfreq/ff400000.gpu/governor
/* 调频,不一定是aclk_gpu,根据实际的clock配置修改 */
echo 400000000 > /sys/kernel/debug/clk/aclk_gpu/clk_rate
cat /sys/kernel/debug/clk/aclk_gpu/clk_rate
/* 调压,不一定是vdd_logic,根据实际的regulator配置修改 */
echo 1000000 > /sys/kernel/debug/regulator/vdd_logic/voltage
cat /sys/kernel/debug/regulator/vdd_logic/voltage
5. 如何查看GPU利用率
/*不一定是fb000000.gpu,根据不同的平台修改 */
cat /sys/devices/platform/fb000000.gpu/devfreq/fb000000.gpu/load
6. 如何查看GPU温度
cat /sys/class/thermal/thermal_zone1/temp
7. 相关文档
- Android SDK RKDocs\common\DVFS\Rockchip_Developer_Guide_Devfreq_CN
- Linux SDK docs\cn\Common\DVFS\Rockchip_Developer_Guide_Devfreq_CN
三.DDR相关命令
1. 查看DDR频率
cat /sys/kernel/debug/clk/clk_summary | grep ddr
cat /sys/class/devfreq/dmc/cur_freq
2. 如何DDR定频
echo userspace > /sys/class/devfreq/dmc/governor
cat /sys/class/devfreq/dmc/available_frequencies
echo 1560000000 > /sys/class/devfreq/dmc/userspace/set_freq
3. 如何查看DDR带宽利用率
cat /sys/class/devfreq/dmc/load
4. 如何统计DDR带宽
/* 需要找FAE申请DDR带宽统计工具rk-msch-probe,包含32位和64位对应不同平台 */
./rk-msch-probe-for-user-32bit -c rv1126 -f 924
/* -c rv1126 表示当前芯片为1126, -f 表示当前频率为 924M ,可通过-h 参考具体的命令 */
5. 内存调试
查看内存信息
cat /proc/meminfo
查看虚拟内存使用情况
cat /proc/vmallocinfo
CMA调试需要先打开下面宏配置
CONFIG_CMA_DEBUGFS=y #打开调试文件节点
CONFIG_CMA_DEBUG=y #打印CMA日志信息
ls /sys/kernel/debug/cma/cma-reserved
alloc:用于从当前CMA块分配内存,单位:页
bitmap:标记当前CMA块各个页是否被分配,1表示已被申请,0表示未被申请free:用于当前CMA块释放内存,单位:页
order_per_bit:表示一个BIT所代表的页的阶数
used:当前被申请的页的个数,单位:页
base_pfn:当前CMA块首个页的页帧数
maxchunk:当前CMA块最大连续空闲页的数量,单位:页
查看DMA buffer信息
cat /sys/kernel/debug/dma_buf/bufinfo
cat /proc/rk_dmabuf/size
RV1106/RV1103专用分配器:RK-DMA-HEAP
cat /proc/rk_cma/rk-dma-heap-cma
cat /proc/rk_dma_heap/dma_heap_info
6. 内存压力测试
stressapptest -s 43200 -i 4 -C 4 -W --stop_on_errors -M 128
memtester 128m > /data/memtester_log.txt &
7. 相关文档
- Android SDK
RKDocs\common\DDR***
RKDocs\common\MEMORY***
- Linux SDK
docs\cn\Common\DDR***
docs\cn\Common\MEMORY***
四.NPU相关命令
目前Rockchip包含NPU的芯片分为RKNPU和RKNPU2。
RKNPU包含:RK3399pro/RK1808/RV1126/RV1109。
RKNPU2包含:RK3562/RK3566/RK3568/RK3588/RV1103/RV1106。
1. 查看NPU频率
/*不一定是fdab0000.npu,根据不同的平台修改 */
cat /sys/kernel/debug/clk/clk_summary | grep npu
cat /sys/class/devfreq/fdab0000.npu/cur_freq
2. 如何NPU定频
/*不一定是fdab0000.npu,根据不同的平台修改 */
echo userspace > /sys/class/devfreq/fdab0000.npu/governor
echo 1000000000 > /sys/class/devfreq/fdab0000.npu/userspace/set_freq
cat /sys/class/devfreq/fdab0000.npu/cur_freq
3. NPU支持查询设置项
下面命令只支持RKNPU2平台驱动且驱动版本在 0.7.2 之后。
查询NPU利用率
cat /sys/kernel/debug/rknpu/load
cat /proc/debug/rknpu/load
查询NPU驱动版本
cat /sys/kernel/debug/rknpu/driver_version
cat /proc/debug/rknpu/driver_version
查询NPU电源状态
cat /sys/kernel/debug/rknpu/power
打开NPU电源
echo on > /sys/kernel/debug/rknpu/power
关闭NPU电源
echo off > /sys/kernel/debug/rknpu/power
查询NPU工作电压
cat /sys/kernel/debug/rknpu/volt
查询 NPU 动态开关电源,电源延迟关闭时间(单位: ms)
cat /sys/kernel/debug/rknpu/delayms
设置 NPU 动态开关电源,电源延迟关闭时间(单位: ms)
echo 2000 > /sys/kernel/debug/rknpu/delayms
4. 相关资料
五.RGA相关命令
1. 查询RGA频率
cat /sys/kernel/debug/clk/clk_summary | grep rga //查询rga频率,其中的aclk的频率
2. 修改RGA频率
echo 400000000 > /sys/kernel/debug/clk/aclk_rga/clk_rate //400000000修改为想要修改的频率
3. RGA驱动版本查询
cat /sys/kernel/debug/rkrga/driver_version
cat /proc/rkrga/driver_version
4. 查询librga库版本号
5. 开启librga日志
6. RGA debug节点
cat /sys/kernel/debug/rkrga/debug
REG [DIS]
MSG [DIS]
TIME [DIS]
INT [DIS]
MM [DIS]
CHECK [DIS]
STOP [DIS]
help:
'echo reg > debug' to enable/disable register log printing.
'echo msg > debug' to enable/disable message log printing.
'echo time > debug' to enable/disable time log printing.
'echo int > debug' to enable/disable interruppt log printing.
'echo mm > debug' to enable/disable memory manager log printing.
'echo check > debug' to enable/disable check mode.
'echo stop > debug' to enable/disable stop using hardware
7. RGA负载查询
cat sys/kernel/debug/rkrga/load
8. RGA内存管理器查询
cat sys/kernel/debug/rkrga/mm_session
9. RGA任务请求查询
cat sys/kernel/debug/rkrga/request_manager
10. RGA硬件信息查询
cat sys/kernel/debug/rkrga/hardware
11. Dump运行数据
通过以下命令dump运行数据用于调试,可以通过调试节点配置实现将RGA接下来几帧数据写到指定目录下,如果没有该节点说明当前kernel不支持。
设置dump数据路径
echo /data/rga_image > sys/kernel/debug/rkrga/dump_path
设置dump数据帧数
echo 1 > sys/kernel/debug/rkrga/dump_image
12. 相关文档
六.VPU相关命令
1. 查询VPU驱动版本
cat /proc/mpp_service/version
2. 查看VPU帧率
cat /proc/mpp_service/sessions-summary
3 查看频率
cat /sys/kernel/debug/clk/clk_summary | grep rkvenc
4. 修改频率
echo 600000000 > /proc/mpp_service/rkvenc/clk_core
5. 打开debug打印
echo 0x100 > /sys/module/rk_vcodec/parameters/mpp_dev_debug
6. 相关文档
- Android SDK
RKDocs\android\video\Rockchip_Android_Multimedia_FAQ_CN
RKDocs\common\MPP\Rockchip_Developer_Guide_MPP_CN
- Linux SDK
docs\cn\Common\MPP\Rockchip_Developer_Guide_MPP_CN
七.打开性能模式
echo performance | tee $(find /sys/ -name *governor);