Quel est l'état des GPIO lorsque le système s'arrête ?
Modérateur : Francois
Quel est l'état des GPIO lorsque le système s'arrête ?
Bonjour à tous,
Je m'interroge sur l'état des GPIO lors de l'extinction du raspberry. Je voudrais détecter l’arrêt de la carte via une broche GPIO en mode sortie. Je possède un raspberry pi type B (depuis longtemps maintenant) et je l'ai couplé à un montage électronique qui permet d'alimenter le raspberry et un disque dur basse consommation.
Un relais commandé par un circuit logique permet de couper et de remettre l'alimentation pour le démarrage du système. Le circuit détecte à la fois la position d'un interrupteur et l'état de la carte (allumée ou éteinte) via une sortie GPIO.
Seulement voilà, je ne suis pas certain que les sorties GPIO se comportent de la bonne façon lorsque le système s’éteint.
Mon système détecte la position de l'interrupteur via un GPIO en mode entrée et exécute un script en python qui ordonne l'arrêt du système lorsque l'interrupteur est en position off.
J'ai d'abord utilisé la commande shutdown dans mon script mais les GPIO restent actifs après l’arrêt de la carte. J'utilise donc maintenant la commande poweroff qui arrête le système et la carte.
Les GPIO sont donc désactivés après l’extinction (0v en sortie). Sauf que la led d'activité clignote encore quelques fois après la coupure ce qui pour moi indique que le système n'est pas complètement arrêté. J'ai ajouté un petit condensateur qui permet de retarder la détection de coupure du GPIO et donc la coupure de l'alimentation. Ca semble bien fonctionner mais comment être sur que la carte est bien éteinte ? Elle pourrait mettre plus de temps à s'éteindre et se retrouver privée de courant pendant l'extinction.
S'il y a des experts en GPIO dans la salle ou bien si d'autres connaissent un autre moyen de détecter l’arrêt de la carte, merci pour votre aide.
Je m'interroge sur l'état des GPIO lors de l'extinction du raspberry. Je voudrais détecter l’arrêt de la carte via une broche GPIO en mode sortie. Je possède un raspberry pi type B (depuis longtemps maintenant) et je l'ai couplé à un montage électronique qui permet d'alimenter le raspberry et un disque dur basse consommation.
Un relais commandé par un circuit logique permet de couper et de remettre l'alimentation pour le démarrage du système. Le circuit détecte à la fois la position d'un interrupteur et l'état de la carte (allumée ou éteinte) via une sortie GPIO.
Seulement voilà, je ne suis pas certain que les sorties GPIO se comportent de la bonne façon lorsque le système s’éteint.
Mon système détecte la position de l'interrupteur via un GPIO en mode entrée et exécute un script en python qui ordonne l'arrêt du système lorsque l'interrupteur est en position off.
J'ai d'abord utilisé la commande shutdown dans mon script mais les GPIO restent actifs après l’arrêt de la carte. J'utilise donc maintenant la commande poweroff qui arrête le système et la carte.
Les GPIO sont donc désactivés après l’extinction (0v en sortie). Sauf que la led d'activité clignote encore quelques fois après la coupure ce qui pour moi indique que le système n'est pas complètement arrêté. J'ai ajouté un petit condensateur qui permet de retarder la détection de coupure du GPIO et donc la coupure de l'alimentation. Ca semble bien fonctionner mais comment être sur que la carte est bien éteinte ? Elle pourrait mettre plus de temps à s'éteindre et se retrouver privée de courant pendant l'extinction.
S'il y a des experts en GPIO dans la salle ou bien si d'autres connaissent un autre moyen de détecter l’arrêt de la carte, merci pour votre aide.
-
- Administrateur
- Messages : 3234
- Enregistré le : mer. 17 sept. 2014 18:12
- Localisation : Seine et Marne
Re: Quel est l'état des GPIO lorsque le système s'arrête ?
Bonjour,
En branchant une LED sur un GPIO et un écran pour vérifier l'arrêt complet, on constate que les GPIO passent à l'état 0 bien avant que l'OS soit complètement arrêté.
Ce qui est compréhensible puisse qu'il faut que l'OS arrête tout se qui est en court avant de s'arrêter lui même.
En branchant une LED sur un GPIO et un écran pour vérifier l'arrêt complet, on constate que les GPIO passent à l'état 0 bien avant que l'OS soit complètement arrêté.
Ce qui est compréhensible puisse qu'il faut que l'OS arrête tout se qui est en court avant de s'arrêter lui même.
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.
Re: Quel est l'état des GPIO lorsque le système s'arrête ?
Bonjour,
merci pour votre réponse. J'ai fait le test en branchant un écran et pour ma part l'affichage est arrêté lorsque les GPIO se coupent, ce qui voudrait dire que l'os est arrêté.
Du coup j'ai fait d'autres tests pour bien comprendre le fonctionnement des GPIO.
Dans mon cas, je ne commande pas le passage du GPIO à l'état bas dans mon script d'extinction, c'est un arrêt matériel qui occasionne la mise hors tension des GPIO (poweroff). La commande shutdown qui éteint uniquement l'os laisse les GPiO actifs dans l'état ou ils se trouvaient au moment de l'arrêt.
Lors de l'arrêt matériel, la diode d'activité clignote encore 3 ou 4 fois à intervalles réguliers après l'arrêt des GPIO. Je me demande donc si le fait de couper l'alimentation à ce moment la présente des risques pour la carte ou bien s'il s'agit simplement d'un clignotement indiquant que la carte est arrêtée. Le clignotement ressemble plus à un signal qu'à une réelle activité.
merci pour votre réponse. J'ai fait le test en branchant un écran et pour ma part l'affichage est arrêté lorsque les GPIO se coupent, ce qui voudrait dire que l'os est arrêté.
Du coup j'ai fait d'autres tests pour bien comprendre le fonctionnement des GPIO.
Dans mon cas, je ne commande pas le passage du GPIO à l'état bas dans mon script d'extinction, c'est un arrêt matériel qui occasionne la mise hors tension des GPIO (poweroff). La commande shutdown qui éteint uniquement l'os laisse les GPiO actifs dans l'état ou ils se trouvaient au moment de l'arrêt.
Lors de l'arrêt matériel, la diode d'activité clignote encore 3 ou 4 fois à intervalles réguliers après l'arrêt des GPIO. Je me demande donc si le fait de couper l'alimentation à ce moment la présente des risques pour la carte ou bien s'il s'agit simplement d'un clignotement indiquant que la carte est arrêtée. Le clignotement ressemble plus à un signal qu'à une réelle activité.
-
- Raspinaute
- Messages : 735
- Enregistré le : lun. 22 déc. 2014 16:50
- Localisation : 67380 LINGOLSHEIM
Re: Quel est l'état des GPIO lorsque le système s'arrête ?
Bonjour,DrMastock a écrit :Bonjour à tous,
...
Mon système détecte la position de l'interrupteur via un GPIO en mode entrée et exécute un script en python qui ordonne l'arrêt du système lorsque l'interrupteur est en position off.
J'ai d'abord utilisé la commande shutdown dans mon script mais les GPIO restent actifs après l’arrêt de la carte. J'utilise donc maintenant la commande poweroff qui arrête le système et la carte.
L'éternel problème des états transitoires
Le danger réel de la coupure électrique "sauvage" avec un UNIX, c'est la corruption des systèmes de fichiers car ce système, historiquement, pour accélérer l'accès à des HD qui étaient bien plus lents que de nos jours, utilise massivement la RAM comme cache pour les IO.
Un fichier corrompu peut rendre le système instable, voire empêcher son démarrage.
Je vous suggère d'ajouter à votre script, avant la commande poweroff, un passage en mode mono utilisateur (init s à vérifier pour le raspberry) suivi d'une commande formelle de vidage des caches (sync).
L'arrêt sera un peu plus long mais, AMHA, devrait être plus fiable
Sylvain
Re: Quel est l'état des GPIO lorsque le système s'arrête ?
Merci Sylvain pour ces conseils mais je pensais que la commande poweroff se chargeait d'éteindre proprement le système avant d'éteindre la carte. Pour moi c'est comme un shutdown suivi du extinction matériel. Ça n'est pas le cas ?
Pour moi l'OS est bien arrêté et ne risque plus rien lorsque les GPIO se coupent car c'est la carte qui se met hors tension après l'arrêt du système. Ma question était au niveau de cette mise hors tension de la carte puisque visiblement elle clignote encore un peu après la coupure des GPIO(et ça n'est pas une activité système, la diode d'activité clignote régulièrement 5fois je crois avant de s'éteindre complètement. J'en déduis qu'il y a une phase de mise hors tension qui n'est peut-être pas instantanée et j'ai peur d'endommager la carte (et non l'OS) en coupant le courant pendant cette phase.
Ce clignotement est-il juste un signal pour dire que la carte est bien arrêtée ou bien qu'il se passe encore quelque chose au niveau matériel ? Ou bien je me trompe complètement et le système tourne encore à ce moment là ?
Pour moi l'OS est bien arrêté et ne risque plus rien lorsque les GPIO se coupent car c'est la carte qui se met hors tension après l'arrêt du système. Ma question était au niveau de cette mise hors tension de la carte puisque visiblement elle clignote encore un peu après la coupure des GPIO(et ça n'est pas une activité système, la diode d'activité clignote régulièrement 5fois je crois avant de s'éteindre complètement. J'en déduis qu'il y a une phase de mise hors tension qui n'est peut-être pas instantanée et j'ai peur d'endommager la carte (et non l'OS) en coupant le courant pendant cette phase.
Ce clignotement est-il juste un signal pour dire que la carte est bien arrêtée ou bien qu'il se passe encore quelque chose au niveau matériel ? Ou bien je me trompe complètement et le système tourne encore à ce moment là ?
-
- Messages : 46
- Enregistré le : lun. 22 janv. 2018 11:04
Re: Quel est l'état des GPIO lorsque le système s'arrête ?
+1 Je me suis posé la même question en voulant déporter la diode d'activité du Pi
La solution que j'ai trouvée pour la déporter, c'est de mettre une diode sur le port série, comme expliqué dans ce tuto
Et j'ai remarqué que cette diode sur le port série s'arrête plusieurs secondes avant celle intégrée du Pi et je me demande s'il y a un risque à couper l'alimentation du Pi pendant cette phase...
La solution que j'ai trouvée pour la déporter, c'est de mettre une diode sur le port série, comme expliqué dans ce tuto
Et j'ai remarqué que cette diode sur le port série s'arrête plusieurs secondes avant celle intégrée du Pi et je me demande s'il y a un risque à couper l'alimentation du Pi pendant cette phase...
-
- Raspinaute
- Messages : 970
- Enregistré le : dim. 28 déc. 2014 15:28
- Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe
Re: Quel est l'état des GPIO lorsque le système s'arrête ?
Bonjour,
Pour déporter l'activité, il y a un overlay : pi3-act-led
https://github.com/raspberrypi/firmware ... ays/README
Pour déporter l'activité, il y a un overlay : pi3-act-led
https://github.com/raspberrypi/firmware ... ays/README
[Pour bien commencer] Pour les nouveaux acquéreurs de Raspberry Pi (index de liens utiles)
Awesome Raspberry Pi
Awesome Raspberry Pi
-
- Messages : 46
- Enregistré le : lun. 22 janv. 2018 11:04
Re: Quel est l'état des GPIO lorsque le système s'arrête ?
Excellent, merci pour l'info, je vais tester ça !!!dyox a écrit :Bonjour,
Pour déporter l'activité, il y a un overlay : pi3-act-led
https://github.com/raspberrypi/firmware ... ays/README
-
- Raspinaute
- Messages : 1587
- Enregistré le : dim. 10 mai 2015 18:44
- Localisation : Dans la campagne à côté d'Annecy
- Contact :
Re: Quel est l'état des GPIO lorsque le système s'arrête ?
Salut,
Sous Gentoo, le / est meme repassé en RO avant l'arret effectif pour lancer les dernieres commandes en étant sur qu'il n'y aura plus de modification sur son FS.
De toutes facons, une fois la SD synchronisé, il n'y a aucune raison qu'un arret brutal casse quoi que ce soit.
Je ne sais pas sur Raspbian que je n'utilise pas, mais tous les OS que je connais le font de base : passer en Single User + Sync.spourre a écrit : Je vous suggère d'ajouter à votre script, avant la commande poweroff, un passage en mode mono utilisateur (init s à vérifier pour le raspberry) suivi d'une commande formelle de vidage des caches (sync).
L'arrêt sera un peu plus long mais, AMHA, devrait être plus fiable
Sous Gentoo, le / est meme repassé en RO avant l'arret effectif pour lancer les dernieres commandes en étant sur qu'il n'y aura plus de modification sur son FS.
C'est étonnant, ca voudrait dire que la console est stoppée "plusieurs secondes" avant l'arret effectif du PI ... ce qui est étonnant vu que du coup, tu n'a aucun moyen de voir les tous derniers messages du PI.Le Ptit Nicolas a écrit :Et j'ai remarqué que cette diode sur le port série s'arrête plusieurs secondes avant celle intégrée du Pi et je me demande s'il y a un risque à couper l'alimentation du Pi pendant cette phase...
De toutes facons, une fois la SD synchronisé, il n'y a aucune raison qu'un arret brutal casse quoi que ce soit.
- BananaPI : Gentoo, disque SATA de 2 To
- Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
- Multimedia par DNLA
- Et pleins d'idées ... et bien sûr, pas assez de temps.
-
- Messages : 46
- Enregistré le : lun. 22 janv. 2018 11:04
Re: Quel est l'état des GPIO lorsque le système s'arrête ?
Merci pour l'info !destroyedlolo a écrit : ↑mar. 13 févr. 2018 11:08C'est étonnant, ca voudrait dire que la console est stoppée "plusieurs secondes" avant l'arret effectif du PI ... ce qui est étonnant vu que du coup, tu n'a aucun moyen de voir les tous derniers messages du PI.Le Ptit Nicolas a écrit :Et j'ai remarqué que cette diode sur le port série s'arrête plusieurs secondes avant celle intégrée du Pi et je me demande s'il y a un risque à couper l'alimentation du Pi pendant cette phase...
De toutes facons, une fois la SD synchronisé, il n'y a aucune raison qu'un arret brutal casse quoi que ce soit.