7 votes

Qu'est-ce qui détermine les politiques de gestion de l'alimentation dans Android ?

J'aborde tout juste le monde des smartphones et d'Android et j'ai quelques doutes :

Quels modules (et SW ou FW ?) décident des politiques avec lesquelles l'alimentation est est donnée à tout composant du téléphone intelligent qui en a besoin ?

en outre,

Les modules de gestion de l'alimentation des smartphones sont-ils implémentés dans le système d'exploitation Android ? Android ou dans un micrologiciel spécial ?

Il est évident que la gestion de l'énergie doit également fonctionner si le système d'exploitation n'est pas encore chargé, mais qui en est responsable ?

Et dans quelle mesure puis-je modifier la gestion de l'alimentation avec une application fonctionnant à l'intérieur du système d'exploitation ?

(J'espère que ces questions ne sont pas hors sujet, au cas où vous pourriez me diriger vers le bon site Stack-Exchange).

3voto

daithib8 Points 330

La gestion de l'alimentation est déterminée par gouverneurs qui règlent la vitesse d'horloge du CPU en fonction de l'utilisation. Chaque vitesse d'horloge fonctionne à une certaine tension et une tension plus basse signifie moins de puissance. Si vous disposez d'un accès Root, vous pouvez modifier le gouverneur et les vitesses d'horloge autorisées du CPU. Il existe également un état de veille dans lequel le CPU entre lorsque l'écran est éteint et que rien ne fonctionne en arrière-plan. Il y a probablement des fonctions de chargement de la batterie qui ne peuvent pas être modifiées, mais tout le reste peut être changé, même les tensions du processeur et de la mémoire vive.

1voto

John Fouhy Points 14700

En parcourant les forums et les sites, j'ai trouvé les réponses suivantes à mes doutes. Je ne suis pas entièrement satisfait mais cela m'a aidé à mieux comprendre.

La gestion de l'alimentation de chaque appareil dépend de certains suspend / resume qui sont mises en œuvre dans le micrologiciel contrôlant ce dispositif particulier.

Cela dépend beaucoup du périphérique : comment et quand chaque périphérique s'éteint (se suspend) et se réveille (reprend) dépend des spécifications du matériel, vous devez lire les fiches techniques pour comprendre quels registres particuliers doivent être manipulés pour le suspendre/reprendre.

Vous pouvez contrôler ces éléments par l'intermédiaire d'un logiciel dans les pilotes des périphériques, à l'intérieur du code source du noyau, en accédant à certaines fonctions de la forme suivante <something>_suspend y <something>_resume .

Par exemple, à partir du code source du noyau de l'émulateur "goldfish" :

dans le fichier drivers/video/goldfishfb.c (le pilote responsable du tampon de trame)

#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

Ainsi, le early_suspend écrit un 1 dans le registre FB_SET_BLANK pour éteindre l'écran, ou un 0 pour le rallumer.

Il me semble donc qu'un processus dans l'environnement d'exécution de l'application doit accéder aux pilotes de périphériques et les corrompre pour manipuler de manière malveillante la gestion de l'alimentation d'un périphérique.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X