Quel est l'état des GPIO lorsque le système s'arrête ?

Le connecteur GPIO du Raspberry Pi, comment l'utiliser sur les Mode A, B et B+

Modérateur : Francois

Répondre
DrMastock
Messages : 11
Enregistré le : mer. 20 avr. 2016 14:22

Quel est l'état des GPIO lorsque le système s'arrête ?

Message par DrMastock » mer. 20 avr. 2016 15:15

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.

domi
Administrateur
Messages : 2172
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 ?

Message par domi » mer. 20 avr. 2016 17:51

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.

DrMastock
Messages : 11
Enregistré le : mer. 20 avr. 2016 14:22

Re: Quel est l'état des GPIO lorsque le système s'arrête ?

Message par DrMastock » jeu. 21 avr. 2016 10:58

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é.

spourre
Raspinaute
Messages : 720
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 ?

Message par spourre » ven. 22 avr. 2016 18:06

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.
Bonjour,

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

DrMastock
Messages : 11
Enregistré le : mer. 20 avr. 2016 14:22

Re: Quel est l'état des GPIO lorsque le système s'arrête ?

Message par DrMastock » lun. 25 avr. 2016 16:34

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à ?

Le Ptit Nicolas
Messages : 34
Enregistré le : lun. 22 janv. 2018 11:04

Re: Quel est l'état des GPIO lorsque le système s'arrête ?

Message par Le Ptit Nicolas » lun. 12 févr. 2018 17:47

+1 Je me suis posé la même question en voulant déporter la diode d'activité du Pi :o

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...

dyox
Raspinaute
Messages : 443
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 ?

Message par dyox » lun. 12 févr. 2018 19:21

Bonjour,
Pour déporter l'activité, il y a un overlay : pi3-act-led
https://github.com/raspberrypi/firmware ... ays/README
Débutant sous RPi / linux
[Pour bien commencer] Pour les nouveaux acquéreurs de Raspberry Pi (liste de liens utiles)

Le Ptit Nicolas
Messages : 34
Enregistré le : lun. 22 janv. 2018 11:04

Re: Quel est l'état des GPIO lorsque le système s'arrête ?

Message par Le Ptit Nicolas » mar. 13 févr. 2018 10:02

dyox a écrit :Bonjour,
Pour déporter l'activité, il y a un overlay : pi3-act-led
https://github.com/raspberrypi/firmware ... ays/README
Excellent, merci pour l'info, je vais tester ça !!! :twisted:

destroyedlolo
Raspinaute
Messages : 1185
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 ?

Message par destroyedlolo » mar. 13 févr. 2018 11:08

Salut,
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
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.
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.
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...
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.
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.
Un descriptif de ma domotique 100% fait maison.

Le Ptit Nicolas
Messages : 34
Enregistré le : lun. 22 janv. 2018 11:04

Re: Quel est l'état des GPIO lorsque le système s'arrête ?

Message par Le Ptit Nicolas » lun. 14 mai 2018 14:13

destroyedlolo a écrit :
mar. 13 févr. 2018 11:08
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...
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.
De toutes facons, une fois la SD synchronisé, il n'y a aucune raison qu'un arret brutal casse quoi que ce soit.
Merci pour l'info !

Répondre

Retourner vers « Le GPIO »