power_profile的配置

          在Android手機的設置->電池裏面能夠看到相關的電量使用信息統計,這些統計的基礎就是power_profile.xml中設定的基礎參數值,包括wifi,亮滅屏,cpu.speed等等,通過計算一個app在一段時間內使用的相關資源的電量,估算出其所耗電量,並顯示出來。

      通常項目相關路徑如下/devices/project_name/overlay/frameworks/base/core/res/res/xml/power_profile.xml

原始配置在/frameworks/base/core/res/res/xml/power_profile.xml,會使用項目配置文件覆蓋frameworks的文件。另一個通常也會配置的文件是/devices/project_name/overlay/frameworks/base/core/res/res/values/config.xml,配置一些行爲參數,比如Led等行爲。我們來看power_profile.xml,如下是相關的配置,註釋是參考值,真實的值是實測值。通常設置爲airplane mode來測試這些基礎數據。

     <item name="none">0</item>
  <item name="screen.on">122</item>  <!-- ~200mA -->
  <item name="screen.full">364</item>  <!-- ~300mA -->
  <item name="bluetooth.active">35</item> <!-- Bluetooth data transfer, ~10mA -->
  <item name="bluetooth.on">1.2</item>  <!-- Bluetooth on & connectable, but not connected, ~0.1mA -->
  <item name="wifi.on">3</item>  <!-- ~3mA -->
  <item name="wifi.active">200</item>  <!-- WIFI data transfer, ~200mA -->
  <item name="wifi.scan">100</item>  <!-- WIFI network scanning, ~100mA -->
  <item name="dsp.audio">38</item> <!-- ~10mA -->
  <item name="dsp.video">100</item> <!-- ~50mA -->
  <item name="camera.flashlight">200</item> <!-- Avg. power for camera flash, ~160mA -->
  <item name="camera.avg">650</item> <!-- Avg. power use of camera in standard usecases, ~550mA -->
  <item name="gps.on">35</item> <!-- ~50mA -->

  <!-- Radio related values. For modems without energy reporting support in firmware, use
       radio.active, radio.scanning, and radio.on. -->
  <item name="radio.active">200</item> <!-- ~200mA -->
  <item name="radio.scanning">40</item> <!-- cellular radio scanning for signal, ~10mA -->
  <!-- Current consumed by the radio at different signal strengths, when paging -->
  <array name="radio.on"> <!-- Strength 0 to BINS-1 -->
      <value>3</value> <!-- ~2mA -->
      <value>5</value> <!-- ~1mA -->
  </array>

    <!-- Different CPU speeds for cluster 0 as reported in
       /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state.

       There must be one of these for each cluster, labeled:
       cpu.speeds.cluster0, cpu.speeds.cluster1, etc... -->
  <array name="cpu.speeds.cluster0">
      <value>652800</value>  <!-- 652 MHz CPU speed -->
      <value>1036800</value>  <!-- 1000 MHz CPU speed -->
      <value>1401600</value>  <!-- 1400 MHz CPU speed -->
      <value>1689600</value>  <!-- 1600 MHz CPU speed -->
      <value>1804800</value>  <!-- 1800 MHz CPU speed -->
  </array>

  <!-- Current at each CPU speed for cluster 0, as per 'cpu.speeds.cluster0'.
       Like cpu.speeds.cluster0, there must be one of these present for
       each heterogeneous CPU cluster. -->
  <array name="cpu.active.cluster0">
      <value>80</value>  <!-- ~100mA -->
      <value>200</value>  <!-- ~100mA -->
      <value>320</value>  <!-- ~100mA -->
      <value>400</value>  <!-- ~100mA -->
      <value>480</value>  <!-- ~100mA -->
  </array>

 CPU能夠工作在哪幾個頻率上,可以通過如下節點查看:

#cat  /sys/devices/system/cpu/cpu4/cpufreq/scaling_available_frequencies

652800 1036800 1401600 1689600 1804800

而/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state. 這個需要相關的feature,在4.9之後被移除了,可通過一些patch再加入進去。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章