RK CPU调试技巧

RK CPU调试技巧

文章目录

  • RK CPU调试技巧
  • 2、CPU温度
    • 查看CPU工作温度
  • 3、CPU电压
    • 查看CPU工作电压
    • 设置CPU工作电压
    • 查看CPU频率电压表
  • 4、CPU频率
    • 查看CPU频率
    • 设置CPU定频
    • 查看CPU频率的最大最小值
    • 查看CPU调频策略
    • CPU调频策略说明
    • 内核配置CPU调频策略
    • CPU频率设备节点详细说明

2、CPU温度

查看CPU工作温度

  • Android5.1

    $ cat /sys/class/hwmon/hwmon0/device/temp1_input
    
  • Android7.1

    $ cat /sys/class/thermal/thermal_zone0/temp
    
  • Android8.1 / Android9.0 / Android10.0 / Android11.0

    $ cat /sys/devices/virtual/thermal/thermal_zone0/temp
    

3、CPU电压

查看CPU工作电压

$ cat /sys/kernel/debug/regulator/vdd_cpu_l/voltage 	//CPU小核
$ cat /sys/kernel/debug/regulator/vdd_cpu_b/voltage		//CPU大核

设置CPU工作电压

$ echo 1250000 > /sys/kernel/debug/regulator/vdd_cpu_l/voltage		//CPU小核
$ echo 1250000 > /sys/kernel/debug/regulator/vdd_cpu_b/voltage		//CPU大核

电压单位:uV

查看CPU频率电压表

$ cat /sys/kernel/debug/opp/oppsummary

    device rate(Hz) target(uV) min(uV) max(uV)
    -------------------------------------------------------------------
    cpu0 408000000 950000 950000 1350000
         600000000 950000 950000 1350000
         816000000 1000000 1000000 1350000
         1008000000 1125000 1125000 1350000
         1200000000 1275000 1275000 1350000
         1248000000 1300000 1300000 1350000
         1296000000 1350000 1350000 1350000
        1416000000 1350000 1350000 1350000
        1512000000 1350000 1350000 1350000

4、CPU频率

查看CPU频率

  • 方法一
$ cat /sys/devices/system/cpu/cpufreq/policy4/cpuinfo_cur_freq		//大核
$ cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq		//小核
  • 方法二
$ cat /sys/devices/system/cpu/cpu4/cpufreq/scaling_cur_freq		//大核
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq		//小核
  • 方法三
$ cat /proc/cpuinfo | grep MHz

设置CPU定频

  • 方法一:命令行临时设置(重启失效)
$ echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor		//设置小核自定义频率
$ echo 1200000 >  /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed		//设置小核频率
$ echo userspace > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor		//设置大核自定义频率
$ echo 1600000 >  /sys/devices/system/cpu/cpufreq/policy4/scaling_setspeed		//设置大核频率
  • 方法二:配置DTS

    DTS中查找到CPU频率表,注释或disabled对应的频率

cpu0_opp_table: cpu0-opp-table {
    compatible = "operating-points-v2";
    opp-shared;
    opp-408000000 {
        opp-hz = /bits/ 64 <408000000>;
        opp-microvolt = <950000 950000 1340000>;
        clock-latency-ns = <40000>;
        opp-suspend;
        status = "disabled";
    };
    opp-600000000 {
        opp-hz = /bits/ 64 <600000000>;
        opp-microvolt = <950000 950000 1340000>;
        clock-latency-ns = <40000>;
        status = "disabled";
    };
};
  • 方法三:内核修改CPU调频策略
Default CPUFreq governor配置项,选择变频策略

查看CPU频率的最大最小值

$ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq		//最大值
$ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq		//最小值

查看CPU调频策略

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

CPU调频策略说明

  • conservative(保守模式)

    根据CPU负载动态调频,按⼀定的⽐例平滑的升⾼或降低频率

  • ondemand(随需应变)

    根据CPU负载动态调频,调频幅度⽐较⼤,可直接调到最⾼频或最低频

  • interactive(交互模式)

    根据CPU负载动态调频,相⽐ondemand,响应时间更快,可配置参数更多,更灵活

  • userspace(用户模式)

    提供相应接口供⽤⼾态应⽤程序调整频率

  • powersave(节能模式)

    功耗优先,始终将频率设置在最低值

  • performance(性能模式)

    性能优先,始终将频率设置为最⾼值

  • schedutil

    EAS使⽤governor。EAS(Energy Aware Scheduling)是新⼀代的任务调度策略, 结合CPUFreq和CPUIdle的策略

    在为某个任务选择运⾏CPU时, 同时考虑了性能和功耗,保证了系统能耗最低,并且不会对性能造成影响

    Schedutil调度策略就是专⻔给EAS使⽤的CPU调频策略

内核配置CPU调频策略

默认调频策略Default CPUFreq governor

CPU Power Management >
    CPU Frequency scaling --->
        [*] CPU Frequency scaling
        <*> CPU frequency translation statistics /* cpufreq stats */
        [ ] CPU frequency translation statistics details
        [*] CPU frequency time-in-state statistics
        Default CPUFreq governor (interactive) ---> /* cpufreq governor */
        <*> 'performance' governor
        <*> 'powersave' governor
        <*> 'userspace' governor for userspace frequency scaling
        <*> 'ondemand' cpufreq policy governor
        -*- 'interactive' cpufreq policy governor
        <*> 'conservative' cpufreq governor
        [ ] 'schedutil' cpufreq policy governor
        *** CPU frequency scaling drivers ***
        <*> Generic DT based cpufreq driver /* platform driver */
        < > Generic ARM big LITTLE CPUfreq driver
        <*> Rockchip CPUfreq driver /* platform device */

CPU频率设备节点详细说明

  • 全志平台
$ ls /sys/devices/system/cpu/cpu0/cpufreq/
    cpuinfo_min_freq:    该文件指定了处理器能够运行的最低工作频率 (单位: 千赫兹)
    cpuinfo_max_freq:   该文件指定了处理器能够运行的最高工作频率 (单位: 千赫兹)
    cpuinfo_transition_latency:    该文件定义了处理器在两个不同频率之间切换时所需要的时间  (单位: 纳秒)
    scaling_driver:          该文件显示该CPU正在使用何种cpufreq driver
    scaling_available_governors:  该文件显示当前内核中支持的所有cpufreq governor类型
    scaling_governor:   通过echo命令,能够改变当前处理器的governor类型
    cpuinfo_cur_freq:    当前cpu正在运行的工作频率
    scaling_available_frequencies:   所有支持的主频率列表  (单位: 千赫兹)
    scaling_min_freq/scaling_max_freq:    显示当前policy的上下限  (单位: 千赫兹)
                                   需要注意的是,当改变cpu policy时,需要首先设置scaling_max_freq, 然后才是scaling_min_freq
    affected_cpus:   需要软件协调频率的CPU列表
    related_cpus:     需要软件或者硬件来协调频率的CPU列表
    scaling_driver:   cpufreq控制的硬件驱动
    scaling_cur_freq:  被governor和cpufreq核决定的当前CPU工作频率。该频率是内核认为该CPU当前运行的主频率
    bios_limit:            如果BIOS告知操作系统限制某一cpu到一个低频率,用户能够从此文件中读取其所支持的最大频率。
    scaling_setspeed:    如果用户选择了“userspace” governor, 那么可以设置cpu工作主频率到某一个指定值。
                                 只需要这个值在scaling_min_freq 和 scaling_max_freq之间即可。
  • 瑞芯微平台
$ ls /sys/devices/system/cpu/cpufreq/policy0/		
    related_cpus 				/* 同个cluster下的所有CPU */
    affected_cpus 				/* 同个cluster下未关的CPU */
    cpuinfo_transition_latency 	/* 两个不同频率之间切换时所需要的时间,单位ns */
    cpuinfo_max_freq			 /* CPU所支持的最高运行频率 */
    cpuinfo_min_freq 			/* CPU所支持的最低运行频率 */
    cpuinfo_cur_freq 			/* 硬件寄存器中读取CPU当前所处的运行频率 */
    scaling_available_frequencies /* 系统支持的频率 */
    scaling_available_governors 	/* 系统支持的变频策略 */
    scaling_governor 			/* 当前使用的变频策略 */
    scaling_cur_freq 			/* 软件上最后一次设置的频率 */
    scaling_max_freq			 /* 软件上限制的最高频率 */
    scaling_min_freq 			/* 软件上限制的最低频率 */
    scaling_setspeed			 /* 将governor切换为userspace才会出现,可以通过该节点修改频率*/
    stats/time_in_state 			/* 记录CPU在各个频率下的运行时间,单位:10ms */
    stats/total_trans 			/* 记录CPU的变频次数 */
    stats/trans_table 			/* 记录CPU在每个频率上的变频次数 */

你可能感兴趣的:(RK平台开发,vscode,运维,linux)