本文就開始討論功耗的調試步驟和方法。
本文主要的內容如下:
一、明確調試的目標
二、明確調試的內容
三、參照電路框圖找出我們需要檢測的輸出
四、找出或引出需測試的輸出
五、功耗測試的步驟流程圖
一、明確調試的目標
明確調試的目標,即在滿足當前的需求情況下,盡最大的可能去降低各種狀態下、各路模塊的功耗值。一般情況下,功耗越低要求也就越嚴格。例如:某設備的電池為300mAh,假設一種情境下休眠功耗電池端為0.8mA,另一種情境下功耗電池端為1mA,顯然僅僅相差200uA(出現這種狀態的情況就比較多了,有可能是GPIO口的狀態不對,也有可能是外設漏電引起,還有可能是電源管理配置有問題。)通過計算可以算出來0.8mA待機375小時,而1mA待機300小時,相差75小時,這對一個設備來說是很重要的。
二、明確調試的內容
我們為了更好的調試功耗,必須做一個簡潔並且一目了然的表格用來記錄我們的測量結果,總的來說測試表格的內容幾乎就是我們測試的內容;
概況的說,包括需要調試6種狀態和5個電路模塊的功耗,其中
6種狀態是指:
第一、開機后的空閑狀態(開機亮屏狀態下,不進行任何操作,即,后台幾乎沒有CPU資源占用率高的進程);
第二、關閉顯示屏,但不休眠的狀態;
第三、進入休眠過程中(early_suspend)的狀態;
第三、完全進入休眠的狀態;
第四、完成關機的狀態;
第五、其他狀態下(比如視頻播放、藍牙通信、WiFi連接、游戲運行等),該狀態只是用來評估CPU內部模塊,或者某個特定的外設工作時的功耗。
5個電路模塊是指:
Battery(電池供電的電路,是設備總的功耗);
cpu_core(給處理器內部的邏輯電路供電的電路);
cpu_memory(給SDRAM(DDR)以及處理器DDR phy供電的電路);
vddio(給處理的VDDIO以及一些處理器內部的外設控制器,外部的外設供電的電路);
其他的外設(包括其他全部的外設,例如wifi、bluetooth、tp以及lcd等,這個可以列出多種調試狀況)
測試的內容當然可以根據當前情況進行有目的測試,比如下圖就是我在測試是做的表格:
注:如果測試的數據值是正確的,我們還需要記錄下測試所用的代碼版本,所用的軟件資源,測試時間,測試人員,以及主頻,外頻等情況。
三、參照電路框圖找出我們需要檢測的輸出
由newton的框架圖可知:
(1) CPU_core由OUT1(1.2V)供電;
(2) CPU_mem由OUT2(1.8V)供電;
(4) OUT6(3.3V)給EVG供電;
(5) OUT9(3.3V)和OUT17(1.8V)給TP供電;
(6) OUT10(1.8V)給MIC供電;
(7) OUT11(3.3V)給sensor供電;
(8) OUT12(3.3V)給MOTOR供電;
(9) OUT13(3.3V)和OUT14(1.8V)給LCD供電;
(10) OUT16(3.3V)給sensors供電;
(11) OUT19(1.8V)給wifi供電;
進而我們了解了整塊板的基本供電情況,從而測量各個模塊的電流情況。
這里我們用到regulator,但是很多開發板或者設備沒有regulator,這時我們就得在電路圖中獲得每個模塊的供電情況。
注:像君正的newton開發板是具有regulator的,在板級中我們能看到regulator的簡單配置,還有一些基本的配置,regulator參數的調試也是屬於功耗調試的,如果木有的話,就算了。
四、找出或引出需測試的輸出
1、電源端比較容易測量;
2、其他測試點:我們需要借助altium designer、99SE、DXP、PADS等工具,找出易測量的點或者飛線,這里就省了如何查找的步驟;
有了前面的鋪墊,我們大致了解了功耗測試的步驟:就是測試每個部分的實際值,再與理論值作對比,出現不符情況,通過硬件的修改和程序的調試,作出修改,是得兩個部分相近,即達成了我們的目標。
具體的測試流程圖如下: