1 votes

État d'arrêt du téléphone Android et processus de démarrage - Android consomme-t-il de l'énergie lorsqu'il est éteint?

Je suis curieux de connaître en détail l'état "éteint" et le processus de démarrage qui suit. J'ai trouvé quelques bons articles sur ce sujet comme celui-ci: http://www.lieberbiber.de/2015/07/05/mediatek-details-little-kernel/ mais ce n'est toujours pas tout à fait clair pour moi quel est le processus exact.

Je sais que la séquence de démarrage de base est :

  • Boot ROM
  • Préchargeur
  • Little kernel (LK)
  • Et ensuite cela peut se diviser en allant vers:
    • Mode Téléchargement (dans le cas d'un appareil Samsung par exemple)
    • Mode Fastboot ou
    • Récupération ou
    • Démarrage normal (démarrage propre d'Android lui-même)

Mais le téléphone est-il vraiment éteint lorsque nous l'éteignons et que la batterie est insérée? Je sais qu'Android est vraiment arrêté mais le téléphone est-il complètement éteint au niveau logiciel? Comme l'article lié ci-dessus le dit, le little kernel affiche l'animation de chargement, ou sélectionne l'image de démarrage suivante lorsqu'on appuie sur les touches (récupération, fastboot, démarrage normal, etc).

Ma question est donc: lorsque le téléphone est éteint et que nous appuyons sur le bouton d'alimentation, est-ce le matériel qui démarre vraiment le processus depuis zéro (à partir du boot rom) ou à ce moment le téléphone a-t-il déjà terminé le traitement du boot rom, du préchargeur et chargé le little kernel également qui surveille les événements des touches pressées?

Cela ne m'est pas clair car j'ai également vérifié le code source du little kernel et il y a des routines de vérification du clavier par exemple pour accéder au mode récupération.

Merci d'avance!

Santé!

0 votes

0voto

EuphCat Points 1

Clarification

Vous posez des questions différentes dans chaque partie de la publication. Le titre pose la question "Est-ce qu'Android consomme de l'énergie lorsqu'il est éteint?" mais la dernière partie de la publication demande "qui est en train de surveiller les événements des touches pressées?", avec quelques questions différentes entre les deux, ce qui ajoute encore plus de distractions et de confusions pour les personnes qui pourraient répondre...

Quoi qu'il en soit, je suppose que tout se résume à : "Une fois qu'un téléphone Android est éteint, qu'est-ce qui le réveille pour démarrer un processus dans chaque situation appropriée?".

Contextes

Pour répondre à cela, je vais devoir vous emmener à un niveau encore plus bas d'un appareil électronique: hardware.
Vous pourriez argumenter,

"De quoi parlez-vous?! Un hardware n'est rien s'il n'y a pas de logiciel! Il doit y avoir quelque chose qui surveille l'entrée des boutons et je demande simplement ce que cela pourrait être".

Soyez patient, s'il vous plaît. Nous y arriverons bientôt.

"Mais...!"

Croyez-moi. D'ailleurs, vous pourriez avoir besoin de vous rappeler de la définition de 'logiciel' et 'hardware' maintenant, car nous allons plonger profondément dans un tel bas niveau.

Je me demande si vous avez déjà joué avec un Arduino, ces petites cartes qui reçoivent des entrées de bouton cliquables et produisent des sorties LED accrocheuses. Une puce qui travaille comme le cerveau dans un de ces appareils* est appelée un 'MCU', ou un 'microcontrôleur'. Un ordinateur - y compris les appareils Android - est équipé de quelques-uns de ceux-ci. Chaque puce de firmware/ROM, chaque puce BIOS, ou tous les circuits intégrés programmables sont probablement un autre microcontrôleur.

Réponse Simple

Ces MCU sont assez simples par rapport aux CPUs, mais plus robustes et écoénergétiques. Pour cette raison, les MCU sont souvent utilisés pour aider les CPUs à mettre en place des choses pour eux. Comment fonctionnent-ils? Essentiellement, ils se comportent juste comme le firmware est programmé à l'intérieur de la ROM.

"Ha, donc c'est simplement le Boot ROM, n'est-ce pas? Vous auriez pu le dire comme ça!" Eh bien, vous devrez en savoir un peu plus pour mieux comprendre et obtenir une réponse à chacune de vos nombreuses questions.

Explication Approfondie

Les mots-clés sont interruption et mode veille (la terminologie du dernier peut varier).

Exemple (Faux)

Le firmware pourrait être codé de manière à ce que la puce soit constamment à l'écoute des entrées externes. Cependant, ce n'est pas la manière idéale. La puce devra récupérer l'état d'un bouton, comparer s'il est allumé ou éteint, et ensuite compter jusqu'à 50ms environ simplement pour attendre. Maintenant, revenir à la récupération de l'état, et ainsi de suite. L'état d'extinction pourrait durer des heures, des jours, voire des années - tout en méconnaissance de cause pour la pauvre petite puce si jamais le moment de briller à nouveau viendrait...

Désolé, c'était un peu troublant. La crise existentielle n'est pas le seul problème cependant, si cela peut vous aider. Même si la puce était active, chaque coup d'œil coûte également des ressources précieuses!

Interruption

Interruption fonctionne dans l'autre sens. C'est un peu comme donner une notification à la partie de calcul principale. Un MCU avec la capacité, essentiellement tous les MCU modernes, est préparé avec une procédure où ils pourraient repousser et oublier ce qu'ils étaient en train de faire avant, exécuter une fonction spécifique pour répondre au signal d'interruption, puis reprendre la tâche qu'ils faisaient auparavant. De cette façon, un MCU n'a pas à calculer de manière active et répétée un ensemble de récupération et de comparaison. Dans le cas d'un appareil Android typique, vous pourriez attribuer une interruption pour [alimentation branchée/débranchée sur la broche de charge], [alimentation branchée/débranchée sur la broche de charge] et [bouton d'alimentation pressé].

Mode Veille

Vous pourriez demander,

"D'accord, donc... maintenant que le MCU n'a pas à être encombré avec ça, il pourrait simplement dormir?"

HA! Non.

... eh bien oui. Le MCU pourrait juste dormir là.

En fait, ce que je veux souligner ici, c'est que, ne me citez pas là-dessus mais, ce qu'ils consomment quand ils dorment devrait être comparable à l'autodécharge d'une batterie. À ce stade, il y a tellement peu de logiciel impliqué ici que je dirais que ceux en cours d'exécution à ce moment-là sont entièrement mis en œuvre dans le hardware - mais c'est juste mon avis et je ne me considère pas assez expert pour vous convaincre nécessairement.

Clôture

Alors, fondamentalement, lorsqu'il est en état d'extinction, le Boot ROM fonctionne à peine de sorte que la consommation de batterie est minuscule. Lorsqu'il est réveillé, tout ce qu'il a à faire est d'appeler Preloader et/ou de dire à LK ce qui s'est passé. Je ne suis pas sûr des détails encore plus profonds; je n'ai aucune idée mais je suis prêt à dire que cela devrait être dépendant de l'implémentation.

Éclaircissements

Je suppose qu'à ce stade, votre question principale devrait être répondue.
Les réponses à vos autres questions sont les suivantes.

Est-ce que Android consomme de l'énergie lorsqu'il est éteint?

Non.
Ce n'est pas une partie du système d'exploitation Android ("Démarrage normal", vous avez dit) qui consomme de l'énergie.

Est-ce qu'Android consomme de l'énergie lorsqu'il est éteint?

Oui mais à peine.
Notez qu'il pourrait y avoir une consommation d'énergie supplémentaire pour alimenter d'autres parties, notamment le module RTC (Horloge Temps Réel).

Mais est-ce que le téléphone est vraiment éteint lorsque nous l'éteignons et que la batterie est insérée? Je sais qu'Android est vraiment arrêté, mais le téléphone est-il complètement éteint au niveau logiciel?

Non mais presque.

lorsque le téléphone est éteint et que nous appuyons sur le bouton d'alimentation, est-ce le matériel qui démarre vraiment le démarrage à partir de zéro (du boot rom) ou à ce stade le téléphone a-t-il déjà terminé le traitement du boot rom, du preloader et le chargement du petit noyau qui surveille les événements des touches pressées?

Plutôt comme le premier.
Sauf que le Boot ROM fonctionne constamment mais à peine.

J'espère que vous avez maintenant une meilleure idée de comment tout fonctionne!

*Note: La plupart des cartes Arduino ont deux MCU, un au centre et un autre pour contrôler l'interface USB.

0 votes

Bonne réponse. Mais cela aurait peut-être été mieux s'il était un peu moins funky et un peu plus direct dans sa réponse.

0 votes

@GokulNC Merci pour votre commentaire :) Je vais essayer la prochaine fois. Peut-être que Quora m'a un peu gâté là-bas?

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