[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是否存在,不