Producenci urządzeń muszą dostarczyć profil zasilania komponentu w /frameworks/base/core/res/res/xml/power_profile.xml
.
Aby określić wartości profili zasilania, użyj sprzętu, który mierzy moc zużywaną przez urządzenie i wykonaj różne operacje, dla których potrzebne są informacje. Zmierz zużycie energii podczas tych operacji i oblicz wartości (w razie potrzeby wyprowadzając różnice w stosunku do innych podstawowych zastosowań energii).
Ponieważ celem profilu mocy jest odpowiednie oszacowanie zużycia baterii, wartości profilu mocy są podawane w prądach (amperach). Platforma Android mnoży prąd przez czas aktywności podsystemu i oblicza wartość mAh, która jest następnie używana do oszacowania ilości baterii rozładowanej przez aplikację/podsystem.
Urządzenia z kontrolerami Bluetooth, modemu i Wi-Fi z systemem Android 7.0 lub nowszym mogą zapewnić dodatkowe wartości mocy uzyskane z danych chipsetu.
Urządzenia z heterogenicznymi procesorami
Profil zasilania dla urządzeń z rdzeniami CPU o architekturze heterogenicznej musi zawierać następujące pola dodatkowe:
- Całkowita liczba procesorów dla każdego klastra (wyrażona w cpu.clusters.cores).
- Prędkości procesora obsługiwane przez każdy klaster.
- Aktywny pobór mocy procesora dla każdego klastra.
Aby odróżnić aktywne zużycie energii przez procesor od obsługiwanych szybkości procesora dla klastrów, dołącz numer klastra do nazwy macierzy. Numery klastrów są przypisywane w kolejności rdzeni procesora w drzewie urządzeń jądra. Na przykład w heterogenicznej architekturze, która ma dwa (2) klastry z czterema (4) rdzeniami:
- klaster0 składa się z cpu0-3
- klaster1 składa się z procesora 4-7
Platforma Android używa tych numerów rdzeni procesora podczas odczytywania statystyk z plików sysfs
w: /sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
Przykład procesorów i szybkości klastra:
<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>
Wartości mocy
W poniższej tabeli opisano dostępne ustawienia wartości mocy. Aby wyświetlić przykładowy plik w AOSP, zobacz power_profile.xml .
Nazwa | Opis | Przykładowa wartość | Uwagi |
---|---|---|---|
otoczenia.wł. | Dodatkowa moc używana, gdy ekran jest w trybie drzemki/otoczenia/zawsze włączony zamiast wyłączony. | około 100 mA | - |
Na ekranie | Dodatkowa moc używana, gdy ekran jest włączony przy minimalnej jasności. | 200 mA | Zawiera kontroler dotykowy i podświetlenie wyświetlacza. Przy jasności 0, a nie minimum Androida, które zwykle wynosi 10 lub 20%. |
ekran.pełny | Dodatkowa moc używana, gdy ekran ma maksymalną jasność, w porównaniu z ekranem o minimalnej jasności. | 100mA-300mA | Ułamek tej wartości (na podstawie jasności ekranu) jest dodawany do wartości screen.on w celu obliczenia zużycia energii przez ekran. |
wifi.wł. | Dodatkowa moc używana, gdy Wi-Fi jest włączone, ale nie odbiera, przesyła ani nie skanuje. | 2 mA | - |
wifi.aktywne | Dodatkowa moc używana podczas przesyłania lub odbierania przez Wi-Fi. | 31 mA | - |
wifi.scan | Dodatkowa moc używana, gdy Wi-Fi skanuje punkty dostępu. | 100 mA | - |
audio | Dodatkowa moc używana podczas dekodowania/kodowania dźwięku przez DSP. | około 10 mA | Używany do dźwięku DSP. |
wideo | Dodatkowa moc używana podczas dekodowania wideo przez DSP. | około 50 mA | Używany do wideo DSP. |
kamera.śr. | Średnie zużycie energii przez podsystem kamery dla typowego zastosowania kamery. | 600 mA | Przeznaczone jako przybliżone oszacowanie dla aplikacji uruchamiającej podgląd i rejestrującej około 10 zdjęć w pełnej rozdzielczości na minutę. |
latarka.kamera | Średnia moc zużywana przez moduł lampy błyskowej aparatu, gdy jest włączony. | 200 mA | - |
na podstawie jakości sygnału gps | Dodatkowa moc wykorzystywana przez GPS w oparciu o siłę sygnału. Jest to wpis wielowartościowy, po jednym na siłę sygnału, od najsłabszego do najsilniejszego. | 30mA, 10mA | - |
gps.wł. | Dodatkowa moc używana, gdy GPS odbiera sygnał. | 50 mA | - |
radioaktywny | Dodatkowa moc używana, gdy radio komórkowe nadaje/odbiera. | 100mA-300mA | - |
radio.skanowanie | Dodatkowa moc wykorzystywana, gdy radio komórkowe dzwoni do wieży. | 1,2 mA | - |
radio.wł. | Dodatkowa moc używana, gdy radio komórkowe jest włączone. Jest to wpis wielowartościowy, po jednym na siłę sygnału (brak sygnału, słaby, umiarkowany, silny). | 1,2 mA | Niektóre radia zwiększają moc, gdy szukają wieży komórkowej i nie wykrywają sygnału. Wartości mogą być takie same lub maleć wraz ze wzrostem siły sygnału. Jeśli podasz tylko jedną wartość, ta sama wartość zostanie użyta dla wszystkich mocnych stron. Jeśli podasz dwie wartości, pierwsza jest używana dla braku sygnału, druga wartość jest używana dla wszystkich innych mocy i tak dalej. |
kontroler.Bluetooth.bezczynny | Średni pobór prądu (mA) kontrolera Bluetooth w stanie bezczynności. | - | Wartości te nie są szacunkowe, lecz pobierane z karty katalogowej sterownika. Jeśli istnieje wiele stanów odbioru lub transmisji, brana jest średnia z tych stanów. Ponadto system zbiera teraz dane do skanowania Low Energy (LE) i Bluetooth . Android 7.0 i nowsze nie używają już wartości mocy Bluetooth dla bluetooth.active (używanych podczas odtwarzania dźwięku przez Bluetooth A2DP) i bluetooth.on (używanych, gdy Bluetooth jest włączony, ale bezczynny). |
bluetooth.kontroler.rx | Średni pobór prądu (mA) kontrolera Bluetooth podczas odbioru. | - | |
bluetooth.kontroler.txt | Średni pobór prądu (mA) kontrolera Bluetooth podczas transmisji. | - | |
napięcie.kontrolera.bluetooth | Średnie napięcie robocze (mV) kontrolera Bluetooth. | - | |
modem.kontroler.sen | Średni pobór prądu (mA) kontrolera modemu w stanie uśpienia. | 0 mA | Wartości te nie są szacunkowe, lecz pobierane z karty katalogowej sterownika. Jeśli istnieje wiele stanów odbioru, brana jest średnia z tych stanów. Jeśli istnieje wiele stanów transmisji, określanie wartości dla każdego stanu transmisji jest obsługiwane, począwszy od systemu Android 9. |
modem.kontroler.bezczynny | Średni pobór prądu (mA) kontrolera modemu w stanie bezczynności. | - | |
modem.kontroler.rx | Średni pobór prądu (mA) kontrolera modemu podczas odbioru. | - | |
modem.kontroler.txt | Średni pobór prądu (mA) kontrolera modemu podczas transmisji przy różnych poziomach mocy RF. Jest to wpis wielowartościowy z jedną wartością na poziom mocy nadawania. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
napięcie.modemu.sterownika. | Średnie napięcie robocze (mV) kontrolera modemu. | - | |
wifi.kontroler.idle | Średni pobór prądu (mA) kontrolera Wi-Fi w stanie bezczynności. | - | Wartości te nie są szacunkowe, lecz pobierane z karty katalogowej sterownika. Jeśli istnieje wiele stanów odbioru lub transmisji, brana jest średnia z tych stanów. |
wifi.kontroler.rx | Średni pobór prądu (mA) kontrolera Wi-Fi podczas odbioru. | - | |
wifi.kontroler.txt | Średni pobór prądu (mA) kontrolera Wi-Fi podczas transmisji. | - | |
wifi.napięcie.kontrolera | Średnie napięcie robocze (mV) kontrolera Wi-Fi. | - | |
prędkość.procesora | Jest to wpis wielowartościowy, który wymienia każdą możliwą szybkość procesora w KHz. | 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 1500000 KHz | Liczba i kolejność wpisów musi odpowiadać wpisom mA w cpu.active. |
procesor.bezczynny | Całkowita moc pobierana przez system, gdy procesory (i SoC) są w stanie zawieszenia systemu. | 3 mA | - |
procesor.obudzony | Dodatkowa moc używana, gdy procesory są w stanie bezczynności harmonogramu (pętla bezczynności jądra); system nie jest w stanie zawieszenia systemu. | 50 mA | Twoja platforma może mieć więcej niż jeden stan bezczynności przy różnych poziomach zużycia energii; wybierz reprezentatywny stan bezczynności dla dłuższych okresów bezczynności harmonogramu (kilka milisekund). Sprawdź wykres mocy na swoim sprzęcie pomiarowym i wybierz próbki, w których procesor zużywa najmniej energii, odrzucając wyższe próbki, gdy procesor był bezczynny. |
procesor.aktywny | Dodatkowa moc wykorzystywana przez procesory podczas pracy z różnymi prędkościami. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | Wartość reprezentuje moc zużywaną przez szyny procesora podczas pracy z różnymi prędkościami. Ustaw maksymalną prędkość w jądrze na każdą z dozwolonych prędkości i ustaw procesor na tej prędkości. Liczba i kolejność wpisów odpowiada liczbie i kolejności wpisów w cpu.speeds. |
cpu.clusters.cores | Liczba rdzeni, które zawiera każdy klaster procesorów. | 4, 2 | Wymagane tylko w przypadku urządzeń o heterogenicznej architekturze procesora . Liczba wpisów i kolejność powinny odpowiadać liczbie wpisów klastra dla cpu.active i cpu.speeds. Pierwszy wpis reprezentuje liczbę rdzeni procesora w klastrze0, drugi wpis reprezentuje liczbę rdzeni procesora w klastrze1 i tak dalej. |
pojemność baterii | Całkowita pojemność baterii w mAh. | 3000 mAh | - |
Skanowanie Low Energy (LE) i Bluetooth
W przypadku urządzeń z systemem Android 7.0 system zbiera dane do skanowania Low Energy (LE) i ruchu sieciowego Bluetooth (takiego jak RFCOMM i L2CAP) i kojarzy te działania z aplikacją inicjującą. Skanowania Bluetooth są skojarzone z aplikacją, która zainicjowała skanowanie, ale skanowania wsadowe nie są (i są skojarzone z aplikacją Bluetooth). W przypadku skanowania aplikacji przez N milisekund koszt skanowania wynosi N milisekund czasu rx i N milisekund czasu tx; cały pozostały czas kontrolera jest przypisywany do ruchu sieciowego lub aplikacji Bluetooth.