מדידה של ערכי עוצמה

יצרני המכשירים צריכים לספק פרופיל כוח של רכיב /frameworks/base/core/res/res/xml/power_profile.xml

כדי לקבוע ערכים לפרופילים של אספקת חשמל, צריך להשתמש בחומרה שמודדת את ההספק בשימוש במכשיר ולבצע את הפעולות השונות שעבורן יש צורך במידע. למדוד את צריכת החשמל במהלך פעולות אלה ולדווח את הערכים (שגוזרים הבדלים משימושים אחרים בעוצמה בסיסית, לפי הצורך).

המטרה של פרופיל צריכת החשמל היא להעריך את הירידה ברמת הטעינה של הסוללה בצורה הולמת, ולכן הערכים של פרופיל צריכת החשמל מוצגים במונחי זרם (אמפר). מסגרת Android מכפילה את הנוכחי בזמן שבו מערכת המשנה הייתה פעילה מחשב את ערך ה-mAh, שמשמש להערכת כמות הסוללה שהיישום או מערכת המשנה מתרוקנים.

מכשירים עם בקרי Bluetooth, מודם ו-Wi-Fi שפועלת בהם גרסת Android 7.0 ערך גבוה יותר יכול לספק ערכי עוצמה נוספים שהתקבלו מנתוני ערכת השבבים.

מכשירים עם מעבדים הטרוגניים

פרופיל צריכת האנרגיה של מכשירים עם ליבות CPU בארכיטקטורה הטרוגנית חייב לכלול את השדות הנוספים הבאים:

  • המספר הכולל של יחידות המעבד (CPU) לכל אשכול (מבוטא ב-cpu.clusters.cores).
  • מהירויות המעבד (CPU) שנתמכות על ידי כל אשכול.
  • צריכת החשמל של המעבד (CPU) הפעיל לכל אשכול.

כדי להבחין בין צריכת החשמל של המעבד (CPU) הפעיל לבין מעבד (CPU) נתמך של אשכולות, מוסיפים את מספר האשכול לשם המערך. מספרי האשכולות מוקציים לפי סדר הליבות של המעבד (CPU) בעץ המכשיר של הליבה. עבור בארכיטקטורה הטרוגנית שיש בה שני (2) אשכולות עם ארבעה (4) ליבות:

  • אשכול 0 מורכב מ-cpu0-3
  • cluster1 מורכב מ-cpu4-7

ה-framework של Android משתמש במספרי הליבה של המעבד (CPU) כשקוראים נתונים סטטיסטיים מ-sysfs הקבצים ב: /sys/devices/system/cpu/cpu<number>/cpufreq/stats.

דוגמה למעבדי CPU ומהירויות של אשכולות:

<array name="cpu.active.cluster0">
<value>200</value>
<value>300</value>
<value>400</value>
</array>
<array name="cpu.speeds.cluster0">
<value>600000</value>
<value>800000</value>
<value>1200000</value>
</array>

<array name="cpu.active.cluster1">
<value>400</value>
<value>500</value>
<value>600</value>
</array>
<array name="cpu.speeds.cluster1">
<value>800000</value>
<value>1200000</value>
<value>1400000</value>
</array>

ערכי עוצמה

בטבלה הבאה מתוארות ההגדרות הזמינות של ערך אספקת החשמל. כדי להציג את קובץ לדוגמה ב-AOSP: power_profile.xml.

שם תיאור ערך לדוגמה הערות
ambient.on צריכת האנרגיה הנוספת כשהמסך במצב שינה/תאורה סביבתית/תמיד מופעל במקום במצב כבוי. כ-100 מיליאמפר לשעה -
screen.on צריכת האנרגיה הנוספת כשהמסך מופעל בהבהירות מינימלית. 200 mA כולל שלט מגע ותאורה אחורית של המסך. בהגדרת בהירות 0, ולא בהגדרה המינימלית של Android, שמשתנה בדרך כלל בין 10% ל-20%.
screen.full. צריכת חשמל נוספת כשהמסך מגיע לרמת בהירות מקסימלית, בהשוואה ל- במסך בבהירות המינימלית. 100 מיליאמפר לשעה-300 מיליאמפר לשעה כדי לחשב את צריכת החשמל של המסך, נוסף ערך חלקי של הערך הזה (על סמך בהירות המסך) לערך screen.on.
wifi.on חשמל נוסף בשימוש כשה-Wi-Fi מופעל אבל לא מקבל, בשידור או בסריקה. 2 מיליאמפר לשעה -
wifi.active צריכת אנרגיה נוספת במהלך העברה או קבלה בחיבור Wi-Fi. 31 mA -
wifi.scan צריכת חשמל נוספת בזמן סריקת Wi-Fi לאיתור נקודות גישה. 100 mA -
אודיו צריכת חשמל נוספת במהלך פענוח או קידוד אודיו באמצעות DSP. בערך 10 mA משמש לאודיו DSP.
סרטון מתח נוסף שנעשה בו שימוש במהלך פענוח וידאו דרך DSP. כ-50 מיליאמפר לשעה משמש לווידאו DSP.
camera.avg צריכת החשמל הממוצעת של מערכת המשנה של המצלמה במצלמה רגילה אפליקציה. 600 מיליאמפר לשעה מיועד כאומדן גס לאפליקציה שמריצה תצוגה מקדימה ולצלם כ-10 תמונות ברזולוציה מלאה בדקה.
camera.flashlight ההספק הממוצע שבו משתמש מודול הפלאש של המצלמה כשהוא מופעל. 200 מיליאמפר לשעה -
gps.signalqualitybased צריכת החשמל הנוספת של ה-GPS על סמך עוצמת האות. זוהי רשומה מרובת ערכים, אחת לכל עוצמת אות, מהחלשה לחזקה. 30 מיליאמפר לשעה, 10 מיליאמפר לשעה -
gps.on צריכת חשמל נוספת כשה-GPS מקבל אות. 50 מיליאמפר לשעה -
radio.active צריכת אנרגיה נוספת כשהמכשיר משדר או מקבל נתונים ברדיו הסלולרי. 100 mA-300 mA -
radio.scanning צריכת חשמל נוספת כשהרדיו הסלולרי עובר למגדל. 1.2 מיליאמפר לשעה -
רדיו.on צריכת אנרגיה נוספת כשהרדיו הסלולרי פועל. זוהי רשומה מרובת ערכים, אחת לכל עוצמת אות (אין אות, חלש, בינוני, חזק). 1.2 מיליאמפר לשעה מכשירי רדיו מסוימים מגבירות את אספקת החשמל כשהם מחפשים מגדל תקשורת, לזיהוי אות. הערכים יכולים להיות זהים או נמוכים עם אות גדל העוצמה. אם מציינים רק ערך אחד, אותו ערך משמש לכל נקודות החוזקה. אם מציינים שני ערכים, הראשון משמש לייצוג ללא אות, הערך השני משמש לכל שאר החוזקות, וכן הלאה.
bluetooth.controller.idle ערך ממוצע של צריכת הסוללה (mA) הנוכחית של בקר ה-Bluetooth כשהוא לא פעיל. - הערכים האלה לא מוערכים, אלא נלקחים מגיליון הנתונים של הבקר. אם יש מספר מצבי קבלה או שידור, הערך הממוצע לוקח את המדינות האלה. בנוסף, המערכת אוספת עכשיו נתונים של סריקות Bluetooth ו-Low Energy (LE).

ב-Android מגרסה 7.0 ואילך, כבר לא נעשה שימוש בערכי ההספק של Bluetooth עבור bluetooth.active (שמשמש להפעלת אודיו דרך Bluetooth A2DP) ו-bluetooth.on (שמשמש כש-Bluetooth מופעל אבל לא פעיל).
bluetooth.controller.rx ערך ממוצע של רצף נוכחי (mA) של בקר ה-Bluetooth בזמן הקבלה. -
Bluetooth.controller.tx רמת הטעינה הנוכחית הממוצעת (mA) של בקר ה-Bluetooth במהלך השידור. -
Bluetooth.controller.voltage, מתח הפעלה ממוצע (mV) של בקר ה-Bluetooth. -
modem.controller.sleep צריכת הזרם הממוצעת (mA) של בקר המודם במצב שינה. 0 mA הערכים האלה לא מוערכים, אלא נלקחים מגיליון הנתונים של הבקר. אם יש כמה מצבי קבלה, המערכת מחשבת את הממוצע של המצבים האלה. אם יש מספר מצבי שידור, כולל תמיכה בציון ערך לכל מצב שידור החל מ-Android 9.
modem.controller.idle ערך ממוצע של רצף (mA) של בקר המודם כשהוא לא פעיל. -
modem.controller.rx צריכת הזרם הממוצעת (mA) של בקר המודם במצב קבלה. -
modem.controller.tx צריכת הזרם הממוצעת (mA) של בקר המודם במהלך שידור ברמות שונות של הספק RF. זוהי רשומה מרובת ערכים עם ערך אחד לכל רמת עוצמת שידור. 100 mA,‏ 200 mA,‏ 300 mA,‏ 400 mA,‏ 500 mA
modem.controller.voltage מתח הפעלה ממוצע (mV) של בקר המודם. -
wifi.controller.idle צריכת הזרם הממוצעת (mA) של בקר ה-Wi-Fi במצב חוסר פעילות. - הערכים האלה לא מוערכים, אלא נלקחים מגיליון הנתונים של הבקר. אם יש כמה מצבי קליטה או שידור, המערכת מחשבת את הממוצע של המצבים האלה.
wifi.controller.rx ערך ממוצע של זרם (mA) של בקר ה-Wi-Fi בזמן הקבלה. -
wifi.controller.tx צריכת הזרם הממוצעת (mA) של בקר ה-Wi-Fi במהלך שידור. -
wifi.controller.voltage מתח ההפעלה הממוצע (mV) של בקר ה-Wi-Fi. -
cpu.speeds זוהי רשומה עם מספר ערכים שמפרטת את כל מהירויות המעבד האפשריות ב-KHz. 125,000 KHz, 250,000 KHz, 500,000 KHz, 1000,00 KHz, 1500,000 KHz מספר הרשומות והסדר שלהן חייבים להתאים לרשומות mA ב-cpu.active.
cpu.idle צריכת החשמל הכוללת של המערכת כשמעבדי ה-CPU (וה-SoC) נמצאים במצב השהיה של המערכת. 3 מיליאמפר לשעה -
cpu.awake צריכת חשמל נוספת כשמעבדי ה-CPU נמצאים במצב זמן השהיה לצורכי תזמון (לולאת זמן השהיה בליבה). המערכת לא נמצאת במצב השהיה של המערכת. 50 mA יכול להיות שבפלטפורמה יש יותר ממצב אחד של חוסר פעילות שנמצא בשימוש עם הבדלים רמות של צריכת חשמל; בחירת מצב לא פעיל מייצג למשך זמן ארוך יותר פרקי זמן של חוסר פעילות במתזמן הבקשות (כמה אלפיות שנייה). בודקים את תרשים צריכת החשמל בציוד המדידה ובוחרים דגימות שבהן צריכת החשמל של המעבד היא הנמוכה ביותר, ומבטלים דגימות עם צריכת חשמל גבוהה יותר שבהן המעבד יצא ממצב מנוחה.
cpu.active צריכת החשמל הנוספת של מעבדים כשהם פועלים במהירויות שונות. 100 mA,‏ 120 mA,‏ 140 mA,‏ 160 mA,‏ 200 mA הערך מייצג את הכוח שבו משתמשים המסילות של המעבד כשהן פועלות במהירויות שונות. יש להגדיר את המהירות המקסימלית בליבה (kernel) לכל אחת מהמהירויות והאטב המותרים של המעבד במהירות הזאת. המספר והסדר של הרשומות תואמים את המספר והסדר של הרשומות ב-cpu.speeds.
cpu.clusters.cores מספר הליבות בכל אשכול של מעבדים. 4, 2 נדרשת רק במכשירים עם ארכיטקטורות מעבדים הטרוגניות. מספר הרשומות והסדר צריכים להתאים למספר הרשומות באשכול של cpu.active ו-cpu.speeds. הערך הראשון מייצג את מספר ליבות המעבד באשכול cluster0, הערך השני מייצג את מספר ליבות המעבד באשכול cluster1 וכן הלאה.
battery.capacity קיבולת הסוללה הכוללת במיליאמפר לשעה. 3,000 mAh -

סריקות Bluetooth ו-Low Energy (LE)

במכשירים עם Android 7.0, המערכת אוספת נתונים עבור צריכת אנרגיה נמוכה (LE) סריקות ותנועה ברשת Bluetooth (כגון RFCOMM ו-L2CAP) ושיוכים הפעילויות האלה באמצעות האפליקציה שמתחילה את התהליך. סריקות Bluetooth משויכות באפליקציה שביצעה את הסריקה, אבל סריקות בכמות גדולה לא מתבצעות (וגם משויכים לאפליקציית ה-Bluetooth). באפליקציה N אלפיות השנייה, עלות הסריקה היא N אלפיות השנייה של זמן rx ו-N אלפיות השנייה של זמן tx; כל הזמן שנותר לבקר הוקצה ל- תנועה ברשת או אפליקציית Bluetooth.