Was bestimmt die Energieverwaltungsrichtlinien in Android?

7

Ich nähere mich gerade der Smartphone- und Android-Welt und habe ein paar Zweifel:

Welche Module (und SW oder FW?) Legen die Richtlinien fest, mit denen eine Komponente des Smartphones, die dies benötigt, mit Strom versorgt wird?

Außerdem

Sind Energieverwaltungsmodule auf Smartphones im Android-Betriebssystem oder in einer speziellen Firmware implementiert?

Natürlich muss die Energieverwaltung auch funktionieren, wenn das Betriebssystem noch nicht geladen ist, aber wer ist dafür verantwortlich?

Und inwieweit kann ich die Energieverwaltung mit einer Anwendung ändern, die innerhalb des Betriebssystems ausgeführt wird?

(Ich hoffe, diese Fragen sind nicht Off-Topic. Können Sie mich bitte an die richtige Stack-Exchange-Site weiterleiten?)

Matteo
quelle

Antworten:

3

Die Energieverwaltung wird von Reglern festgelegt, die die CPU-Taktrate je nach Verwendung einstellen. Jede Taktrate arbeitet mit einer bestimmten Spannung und eine niedrigere Spannung bedeutet weniger Leistung. Wenn Sie Root-Zugriff haben, können Sie den Governor und die zulässigen CPU-Taktraten ändern. Es gibt auch einen Ruhezustand, in den die CPU eintritt, wenn der Bildschirm ausgeschaltet ist und im Hintergrund nichts funktioniert. Es gibt wahrscheinlich Batterieladefunktionen, mit denen man nichts anfangen kann, aber alles andere kann geändert werden, sogar die CPU- und DSP-Spannungen.

daithib8
quelle
If you have root access you can change the governor and the allowed CPU clock speeds: Sie sagen also, dass ein einfacher Prozess mit Root-Rechten entscheiden kann, die CPU zu verlangsamen und die DSP-Spannungen zu ändern? Wenn Sie Zeit haben, können Sie bitte eine etwas strukturiertere Antwort geben? Vielen Dank im Voraus, ich brauche wirklich Ihre Hilfe!
Matteo
Sie müssen eine Zeichenfolge in / sys / device / system / cpu / cpu0 / cpufreq / scaling_governor schreiben. Wenn Sie jedoch ein benutzerdefiniertes ROM installieren, wird eine einfache App bereitgestellt.
Daithib8
1
Apps wie SetCPU benötigen root und ermöglichen das Ändern der Taktrate / des Reglers. forum.xda-developers.com/showthread.php?t=505419
NoBugs
@ daithib8 - Ich habe auch eine Antwort gegeben, was denkst du darüber? Weißt du, ob ich es richtig verstanden habe?
Matteo
@NoBugs - Ich habe auch eine Antwort gegeben. Was denkst du darüber? Weißt du, ob ich es richtig verstanden habe?
Matteo
1

Beim Stöbern in Foren und Websites habe ich die folgenden Antworten auf meine Zweifel gefunden. Ich bin nicht ganz zufrieden, aber es hat geholfen, mehr zu verstehen.

Die Energieverwaltung jedes Geräts hängt von einigen suspend/ resumeRichtlinien ab, die in der Firmware implementiert sind, die das jeweilige Gerät steuert.

Dies ist sehr geräteabhängig: Wie und wann sich jedes Gerät ausschaltet (anhält) und aufwacht (wieder aufnimmt), hängt von den HW-Spezifikationen ab. Sie müssen die Datenblätter lesen, um zu verstehen, welche bestimmten Register manipuliert werden müssen, um es anzuhalten / fortzusetzen.

Sie können dieses Material über eine Software in den Treibern der Geräte im Quellcode des Kernels steuern, indem Sie auf einige Funktionen im Formular <something>_suspendund zugreifen <something>_resume.

ZB aus dem Quellcode des Kernels des Emulators "Goldfisch":

in Datei drivers/video/goldfishfb.c(der Treiber, der für den Bildspeicher verantwortlich ist)

#ifdef CONFIG_ANDROID_POWER
static void goldfish_fb_early_suspend(android_early_suspend_t *h)
{
    struct goldfish_fb *fb = container_of(h, struct goldfish_fb, early_suspend);
    writel(1, fb->reg_base + FB_SET_BLANK);
}

static void goldfish_fb_late_resume(android_early_suspend_t *h)
{
    struct goldfish_fb *fb = container_of(h, struct goldfish_fb, early_suspend);
    writel(0, fb->reg_base + FB_SET_BLANK);
}
#endif

Das early_suspendschreibt also eine 1 in das Register FB_SET_BLANK, um den Bildschirm auszuschalten, oder eine 0, um ihn wieder einzuschalten.

Daher scheint es mir, dass ein Prozess in der Anwendungsausführungsumgebung auf die Gerätetreiber zugreifen und diese beschädigen muss, um die böswillige Energieverwaltung eines Geräts zu manipulieren.

Matteo
quelle
1
Hört sich interessant an. Vermuten Sie einen Virus, der Ihr Gerät aktiv hält? Apps können WLAN, Bildschirm und Tastatur von der Java-Seite aus eingeschaltet lassen, siehe developer.android.com/reference/android/os/PowerManager.html
NoBugs
@ NoBugs - Ich vermute keinen Virus, aber vielleicht wäre ich daran interessiert, einen zu schreiben; D ... nur ein Scherz! Der Link ist cool. Danke
Matteo