1. 程式人生 > >[RK3288][Android6.0] 除錯筆記 --- CPU使用的頻率表

[RK3288][Android6.0] 除錯筆記 --- CPU使用的頻率表

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

系統中有三張CPU相關的頻率表:

1. rockchip-cpufreq.c:

/* Frequency table index must be sequential starting at 0 */
static struct cpufreq_frequency_table default_freq_table[] = {
    {.frequency = 312 * 1000,       .index = 875 * 1000},
    {.frequency = 504 * 1000,       .index
= 925 * 1000}, {.frequency = 816 * 1000, .index = 975 * 1000}, {.frequency = 1008 * 1000, .index = 1075 * 1000}, {.frequency = 1200 * 1000, .index = 1150 * 1000}, {.frequency = 1416 * 1000, .index = 1250 * 1000}, {.frequency = 1608 * 1000, .index = 1350 * 1000}, {.frequency = CPUFREQ_TABLE_END}, };
static struct cpufreq_frequency_table *freq_table = default_freq_table;

2. rk3288.dtsi:

&clk_core_dvfs_table {
    operating-points = <
        /* KHz    uV */
        126000 900000
        216000 900000
        312000 900000
        408000 900000
        600000 900000
        696000 950000
        816000 1000000
        1008000 1050000
        1200000 1100000
        1416000
1200000 1512000 1300000 1608000 1350000 // 1704000 1350000 // 1800000 1400000 >; //...... };

3. rk3288.dtsi:

&clk_core_dvfs_table {
        //......
        support-pvtm = <1>;
        pvtm-operating-points = <
                /* KHz    uV    margin(uV)*/
                126000 900000   25000
                216000 900000   25000
                312000 900000   25000
                408000 900000   25000
                600000 900000   25000
                696000 950000   25000
                816000 1000000  25000
                1008000 1050000 25000
                1200000 1100000 25000
                1416000 1200000 25000
                1512000 1300000 25000
                1608000 1350000 25000
                >;
    status="okay";
    };

最終用的是第三張.

程式碼呼叫:

第一張表被覆蓋的地方:
dvfs.c:

static int cpufreq_init_cpu0(struct cpufreq_policy *policy)
{
    freq_table = dvfs_get_freq_volt_table(clk_cpu_dvfs_node);
}
struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct dvfs_node *clk_dvfs_node) 
{
    struct cpufreq_frequency_table *table;

    if (!clk_dvfs_node)
        return NULL;

    mutex_lock(&clk_dvfs_node->vd->mutex);
    table = clk_dvfs_node->dvfs_table;
    mutex_unlock(&clk_dvfs_node->vd->mutex);

    return table;
}

第二張表被覆蓋的地方:

int clk_enable_dvfs(struct dvfs_node *clk_dvfs_node)
{
            if (clk_dvfs_node->support_pvtm)
            pvtm_set_dvfs_table(clk_dvfs_node);
}

相關推薦

[RK3288][Android6.0] 除錯筆記 --- CPU使用的頻率

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 系統中有三張CPU相關的頻率表: 1. rockchip-cpufreq.c: /* Fr

[RK3288][Android6.0] 除錯筆記 --- CPU溫度降頻控制

rk3288平臺關於溫度調節cpu頻率有個bug. 在rk3288.dtsi中,有: temp-limit-enable = <1>; target-temp = <80>; min_temp_limit = <48>

[RK3288][Android6.0] 除錯筆記 --- CPU預設排程策略

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 CPU的頻率調節策略: 1. Performance. 不考慮耗電,只用最高頻率。 2. Interactive. 直接上最高頻率,然後看CPU負

[RK3288][Android6.0] 除錯筆記 --- 讀取當前DDR頻率方法

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 ddr和gpu的clock都受dvfs模組管控, 所以只要執行:[email protected]:/ # cat /sys/dvfs/dvfs_tree kernel log中打印出來: [ 2

[RK3288][Android6.0] 除錯筆記 --- 普通串列埠的新增

Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 uart0,1,3,4 (普通串列埠) 用的是同一個串列埠驅動. uart2(除錯串列埠)的驅動程式碼嵌在fiq debugger的code中. 相關的配置在rk3288.dtsi中:

[RK3288][Android6.0] 除錯筆記 --- hwclock命令無法使用

Platform: Rockchip  OS: Android 6.0  Kernel: 3.10.92 現象:  使用hwclock,提示找不到檔案 [email protected]:/ # hwclock                          

[RK3288][Android6.0] 除錯筆記 --- I2C通訊失敗問題

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 使用rk3288的i2c5讀寫時,會出現以下error log: [email prot

[RK3288][Android6.0] 除錯筆記 --- 測試I2C裝置正常傳輸方法

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 rk在驅動層做了一個通用i2c測試程式碼提供給上層快速測試i2c外設是否傳輸正常. 測試使用方法

[RK3288][Android6.0] 除錯筆記 --- eMMC分割槽號和名字的對應

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 有時候需要知道mmcblk對應的分割槽是哪一個,其實驅動已經完成這個功能了,如下: [email protected]:/dev/blo

[RK3288][Android6.0] 除錯筆記 --- user版本串列埠只有輸出不能輸入

Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92現象: 編譯成user版本之後串列埠只有輸出沒有輸入.原因: 編譯user版本之後 ro.debug

[RK3288][Android6.0] 除錯筆記 --- 系統自帶預置第三方APK方法

Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 Rockchip預設提供了機制來預置第三方APK, 方法很簡單: 1. 在device/rockchip/rk3288建立preinstall目錄(如果

[RK3288][Android6.0] 除錯筆記 --- Audio驅動層判斷錄音資料是否異常

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 之前有提到上層可以通過dump pcm資料檢視波形來確定錄音取樣的資料是否正常,這裡給出驅動層檢視

[RK3288][Android6.0] 除錯筆記 --- 除錯串列埠的更換

Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 假設專案有需求要將除錯串列埠uart2 改成 uart1, 改動如下 (還未驗證,先分享給大家,

[RK3288][Android6.0] 除錯筆記 --- pmu(rk818)暫存器讀寫

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 rk的pmu模組只提供了每次單個暫存器的讀寫,驅動提供了這個節點供使用:/sys/rk818/rk818_test 舉例: 讀取: echo r

[RK3288][Android6.0] 除錯筆記 --- 遮蔽系統下拉選單顯示

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 [email protected]:~/rk3288/frameworks/base/

[RK3288][Android6.0] 除錯筆記 --- ro.serialno的獲取

Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 rk3288平臺的serial number是由drmservice寫進去的,drmservice在rc檔案中定義啟動: init.rk30board.

[RK3288][Android6.0] 除錯筆記 --- 螢幕顯示旋轉方法

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 顯示模組提供了一個property供修改旋轉方向,名為”ro.sf.hwrotation”,有四個值可選 Surface.java /** *

[RK3288][Android6.0] 除錯筆記 --- eMMC壞塊測試

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 網上搜到一個叫eMMC Brickbug Check的apk 啟動后里面的Check Memory一項提示要root,但是系統已經是root過的了,

[RK3288][Android6.0] 除錯筆記 --- 移除uboot和kernel開機logo

Platform: RockchipOS: Android 6.0Kernel: 3.10.92diff --git a/arch/arm/boot/dts/rk3288-b.dts b/arch/arm/boot/dts/rk3288-b.dtsindex ad3bc1a.

[RK3288][Android6.0] 除錯筆記 --- 電池電量一直顯示100%

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 跟蹤發現Android6.0相比之前的Android4.4會判斷Charger是否存在,不