מדוד כוח רכיב

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

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

שליטה בצריכת החשמל

בעת המדידה, ודא שלמכשיר אין חיבור למקור טעינה חיצוני, כגון חיבור USB למארח פיתוח המשמש בעת הפעלת Android Debug Bridge (adb). המכשיר הנבדק עשוי לשאוב זרם מהמארח, ובכך להפחית את המדידות בסוללה. הימנע מחיבורי USB On-The-Go (OTG), שכן התקן OTG עלול לשאוב זרם מהמכשיר הנבדק.

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

  • פעילות סלולרית, Wi-Fi ו-Bluetooth קבלה, שידור או סריקה . כאשר לא מודדים את עוצמת הרדיו הסלולרי, הגדר את המכשיר למצב טיסה והפעל Wi-Fi או Bluetooth לפי הצורך.
  • מסך מופעל/כיבוי . צבעים המוצגים בזמן שהמסך פועל יכולים להשפיע על צריכת החשמל בטכנולוגיות מסוימות של מסך. כבה את המסך בעת מדידת ערכים עבור רכיבים שאינם מסך.
  • השעיית מערכת/חידוש פעולה . מצב כבוי מסך יכול להפעיל השעיית מערכת, הצבת חלקים מהמכשיר במצב נמוך או כבוי. זה יכול להשפיע על צריכת החשמל של הרכיב הנמדד ולהציג הבדלים גדולים בקריאות ההספק כאשר המערכת חוזרת מעת לעת לשלוח אזעקות וכו'. לפרטים, ראה בקרת השעיית מערכת .
  • מעבדים משנים מהירות ונכנסים/יוצאים ממצב סרק של מתזמן מתזמן בהספק נמוך . במהלך פעולה רגילה, המערכת מבצעת התאמות תכופות למהירויות ה-CPU, למספר ליבות ה-CPU המקוונות ולמצבי ליבת מערכת אחרים, כגון מהירות אפיק זיכרון ומתחים של פסי חשמל הקשורים למעבדים ולזיכרון. במהלך הבדיקה, התאמות אלה משפיעות על מדידות ההספק:
    • פעולות קנה המידה של מהירות המעבד יכולות להפחית את כמות קנה המידה של השעון והמתח של אפיקי זיכרון ורכיבי ליבת מערכת אחרים.
    • תזמון פעילות יכול להשפיע על אחוז הזמן שהמעבדים מבלים במצבי סרק עם הספק נמוך. לפרטים על מניעת התרחשות של התאמות אלו במהלך הבדיקה, ראה בקרת מהירויות מעבד .

לדוגמה, ג'ו דרואיד רוצה לחשב את ערך screen.on עבור מכשיר. הוא מאפשר מצב טיסה במכשיר, מפעיל את המכשיר במצב זרם יציב, מחזיק את מהירות המעבד קבועה ומשתמש ב-Wikelock חלקי כדי למנוע השעיית מערכת. לאחר מכן ג'ו מכבה את מסך המכשיר ומבצע מדידה (200 mA). לאחר מכן, ג'ו מדליק את מסך המכשיר בבהירות מינימלית ומבצע מדידה נוספת (300 mA). הערך של screen.on הוא 100 mA (300 - 200).

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

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

מערכת בקרה השעיית

סעיף זה מתאר כיצד להימנע ממצב השעיית מערכת כאשר אינך רוצה שהיא תפריע למדידות אחרות, וכיצד למדוד את צריכת החשמל של מצב השעיית המערכת כאשר אתה כן רוצה למדוד אותו.

מנע השעיית מערכת

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

adb shell "echo temporary > /sys/power/wake_lock"

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

כדי להסיר את ווייקלוק:

adb shell "echo temporary > /sys/power/wake_unlock"

מדוד מערכת השעיה

כדי למדוד את צריכת החשמל במהלך מצב ההשעיה של המערכת, מדוד את הערך של cpu.idle בפרופיל ההספק. לפני המדידה:

  • הסר מנעולים קיימים (כמתואר לעיל).
  • הצב את המכשיר במצב טיסה כדי למנוע פעילות מקבילה של הרדיו הסלולרי, שעשויה לפעול על מעבד נפרד מחלקי ה-SoC הנשלטים על ידי ההשעיה של המערכת.
  • ודא שהמערכת במצב השעיה על ידי:
    • אישור קריאות נוכחיות מתיישבות לערך קבוע. הקריאות צריכות להיות בטווח הצפוי עבור צריכת החשמל של מצב ההשעיה של SoC בתוספת צריכת החשמל של רכיבי המערכת שנותרו מופעלים (כגון ה-USB PHY).
    • בדיקת פלט מסוף המערכת.
    • צופה לאינדיקציות חיצוניות של מצב המערכת (כגון נורית נכבית כאשר אינה במצב השעיה).

שליטה במהירויות המעבד

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

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

עליך לציין את מהירויות ה-CPU הזמינות עבור המכשיר שלך בערך פרופיל הספק cpu.speeds . כדי לקבל רשימה של מהירויות מעבד זמינות, הפעל:

adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

מהירויות אלו תואמות למדידות ההספק המתאימות בערך cpu.active .

עבור פלטפורמות שבהן מספר הליבות המובאות לרשת משפיע באופן משמעותי על צריכת החשמל, ייתכן שיהיה עליך לשנות את מנהל ההתקן של cpufreq או המושל עבור הפלטפורמה. רוב הפלטפורמות תומכות בשליטה על מהירות המעבד באמצעות מושל cpufreq של מרחב המשתמש ושימוש בממשקי sysfs להגדרת המהירות. לדוגמה, כדי להגדיר מהירות עבור 200MHz במערכת עם מעבד אחד בלבד או שכל המעבדים חולקים מדיניות cpufreq משותפת, השתמש במסוף המערכת או במעטפת adb כדי להפעיל את הפקודות הבאות:

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

הערה : הפקודות המדויקות שונות בהתאם למימוש הפלטפורמה cpufreq.

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

כדי למדוד זרם הנצרך על ידי מעבד הפועל במהירויות שונות, השתמש במסוף המערכת כדי למקם את המעבד בלולאה הקשורה למעבד באמצעות הפקודה:

# while true; do true; done

קח את המדידה בזמן שהלולאה מבוצעת.

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

עבור הערך cpu.awake , מדוד את הכוח הנצרך כאשר המערכת אינה בהשהיה ואינה מבצעת משימות. ה-CPU צריך להיות בלולאה סרק של מתזמן צריכת חשמל נמוכה, אולי מבצעת הוראת ARM Wait For Event או במצב הספק נמוך ספציפי ל-SoC עם חביון יציאה מהיר המתאים לשימוש סרק.

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

למדוד את עוצמת המסך

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

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

מדוד מסך בהספק במינימום ומקסימום בהירות תצוגה/תאורה אחורית. כדי להגדיר בהירות מינימלית:

  • השתמש בממשק המשתמש של אנדרואיד (לא מומלץ). הגדר את המחוון הגדרות > בהירות תצוגה לבהירות התצוגה המינימלית. עם זאת, ממשק המשתמש של אנדרואיד מאפשר להגדיר את הבהירות רק למינימום של 10-20% מהבהירות האפשרית של הפאנל או התאורה האחורית, ואינו מאפשר להגדיר בהירות נמוכה עד כדי כך שהמסך לא יהיה גלוי ללא מאמץ גדול.
  • השתמש בקובץ sysfs (מומלץ). אם זמין, השתמש בקובץ sysfs כדי לשלוט בבהירות הלוח עד לבהירות המינימלית הנתמכת על ידי החומרה.

בנוסף, אם קובץ sysfs של הפלטפורמה מאפשר הפעלה וכיבוי של פאנל ה-LCD, התאורה האחורית ומסך המגע, השתמש בקובץ כדי לבצע מדידות כשהמסך מופעל וכיבוי. אחרת, הגדר wakelock חלקי כך שהמערכת לא תכבה, ואז הפעל וכיבוי את המסך באמצעות לחצן ההפעלה.

מדידת עוצמת Wi-Fi

בצע מדידות Wi-Fi ברשת שקטה יחסית. הימנע מהכנסת עבודה נוספת לעיבוד נפחים גבוהים של תעבורת שידור שאינה קשורה לפעילות הנמדדת.

הערך wifi.on מודד את הכוח הנצרך כאשר Wi-Fi מופעל אך אינו משדר או מקבל באופן פעיל. זה נמדד לעתים קרובות כדלתא בין המשיכה הנוכחית במצב השעיית (שינה) של המערכת עם Wi-Fi מופעל לעומת מושבת.

הערך wifi.scan מודד את הכוח הנצרך במהלך סריקת Wi-Fi לנקודות גישה. יישומים יכולים להפעיל סריקות Wi-Fi באמצעות ממשק ה-WifiManager startScan() API . אתה יכול גם לפתוח את הגדרות > Wi-Fi, שמבצעת סריקות נקודות גישה כל כמה שניות עם קפיצה ניכרת בצריכת החשמל, אבל עליך להפחית את הספק המסך מהמדידות הללו.

הערה : השתמש בהגדרה מבוקרת (כגון iperf ) כדי ליצור תעבורה של קליטה והעברת רשת.