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
Cela devrait très bien répondre à votre question : Que se passe-t-il lorsque j'appuie sur le bouton d'alimentation de mon téléphone pour l'allumer ?