IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

extinction/redémarrage d'un Linux Embarqué


Sujet :

Embarqué

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut extinction/redémarrage d'un Linux Embarqué
    Bonjour,

    Mon problème se situ dans le titre, j'aimerais lancer un programme à l'extinction de ma carte électronique, et je n'ai pas trouvé comment... étant novice dans Linux... j'ai un peu de mal pour les choses précise comme ça.

    pour info je travail sur une carte électronique avec un processeur ARM et une distribution que j'ai conçue avec buildroot. Le programme que je veux lancer ira étteindre le 12V qui alimente des moteur (ça évitera les désagrément quand on arrete un programme qui pilote les moteur en plein mouvement).
    bref ça c'est ma vie c'est pour que ça soit plus concret.

    donc le programme c'était juste du système tout simple... ça doit pouvoir se faire... maintenant plus difficile : lorsque j'éteins mon Linux en fait il reboot... pour éteindre vraiment la carte il faudrait aller écrire dans un registre spécifique d'un CPLD... donc il faudrait que ça soit la dernière opération effectuée par le noyau à l'extinction... quelqu'un sait il comment faire ça?

    merci de vos réponse

  2. #2
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Souhaites-tu lancer le programme et éteindre à l'initiative de ton programme ?
    Ou qu'un appui sur le bouton off lance un programme avant de couper le courant ?

    Si c'est le premier cas, as-tu regardé du côté des commandes halt et poweroff ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    en fait je pensais juste au commandes reboot et shutdown.
    dans un premier temps je voudrais qu'un programme s'éxécute automatiquement (comme sur n'importe quel ordi... sauf que je sais pas comment on fait sous linux... et si c'est possible avec mon FS minimaliste) à lorsque l'on lance une commande reboot ou shutdown
    dans un second temps je voudrais enplus que l’extinction se fasse automatiquement et donc que une fois que Linux a fini son boulot un dernier programme/fonction écrive dans un registre ce qui aura pour effet de tout éteindre. Pour cette dernière étape je ne sais pas si c'est possible en dehors du noyau...

    je regarde halt et poweroff merci de l'orientation

  4. #4
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Tout dépend de ton système. Il y a quoi dans ton FS minimaliste ? Il a été généré comment ? Avec un outil particulier ?
    Généralement, les scripts présents dans /etc/init.d sont exécutés au démarrage. Tu peux donc y placer ton script.

    Et tu n'as pas besoin de travailler dans le kernel pour ça, tu peux travailler dans l'espace utilisateur sans soucis.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    je crois que je vois ce que tu veux dire... mais mon script ne doit pas être exécuté au démarrage mais à l'extinction et qui plus est en dernier des dernier bien après la synchro des buffers (ben oui une fois que l'appli va s'éxécuter bye bye l'alim je veux rien perdre)
    donc je crois comprendre mais je ne connais pas du tout pourrais tu m'orienter...
    et comme je l'ai dis au dessus c'est fait avec Buildroot (mon préféré)

    merci de ton aide

  6. #6
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Citation Envoyé par Hayuki Voir le message
    et comme je l'ai dis au dessus c'est fait avec Buildroot (mon préféré)


    Hum j'ai encore du mal à comprendre ton besoin.
    Peux-tu expliquer en détail le fonctionnement de ton système, du lancement du système à son extinction ? Ou plutôt ce que tu aimerais faire.

    Peut-être que tu souhaites exécuter un programme lorsque tu exécute la commande reboot ?
    Si c'est le cas ET que tu utilises busybox (c'est le cas à priori si tu utilises Buildroot pas trop pimpé), il y a peut-être une feinte
    Supprimer le lien symbolique /sbin/reboot vers l'exécutable busybox et le faire pointer vers un script à toi. Tu fais alors ton code qui va faire ce que tu veux et à la fin tu lances busybox reboot

    Je pense que c'était peut-être ce que tu voulais faire.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    aha bien joué la feinte ça marche pour mon premier besoin même si ça ressemble a du scotch mais (ben oui trop facile, on est dans l'embarqué) j'aurais voulu exécuter un dernier programme à la fin de reboot (un programme qui ira éteindre la machine...

    bref explications :
    j'ai une carte électronique (ARM, 256Mo, FPGA, CPLD)
    je l’allume elle boot mon beau (ou presque) Linux
    je bosse je bosse je bosse
    ensuite par la ligne de commande je tape soit : shutdown soit reboot
    mais quand je fais reboot j'aimerais que le 12V s'éteigne (donc par un programme) ça permettrais de pas flinguer la partie moteur pendant le boot au cas où il y aurait un état batard (donc là ya la feinte)
    sinon je tape shutdown et là j'aimerais qu'il me fasse le process comme d'hab comme il faut mais qu'il aille dire a l'alim de s'éteindre quand il a fini (via fonction ou programme forcément...) facile non?

  8. #8
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Ah en effet, un peu plus tricky.

    Ton idée est de couper la partie puissance de ta carte ? Y a t-il une carte, un circuit intermédiaire ? Le 12V est délivré par quel élément de ta carte ? (physiquement)

    Globalement j'ai donc bien compris ton problème, la question est, est-ce obligatoire de couper le 12V après le reboot/shutdown/halt etc. Ou on peut le faire juste avant ? Auquel cas ça simplifie les choses à mort !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    on y est presque
    l'alim 12V ok pas de souci pour le reboot on en parle plus!

    moi maintenant je veux que a l'extinction (shutdown ou poweroff) on vienne couper l'alimentation générale pour éteindre le produit... sauf que on peu pas le faire n'importe quand sinon on risque de perdre des données et de corrompre des fichiers ou ce genre de chose... donc il faut que ça se fasse le plus tard possible! sinon

    on y est ... presque (oué il me plait celui-là)
    j'ai pas été très clair...

  10. #10
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    D'accord. Et mon astuce sur le poweroff ? Elle ne correspond pas à ton besoin ?

    - programme qui s'exécute
    - appel de poweroff qui appelle d'abord ton script de fin de tous les programmes + sauvegarde générale
    - appel du vrai poweroff via busybox par ton script de sauvegarde à la fin, qui va couper le Linux une fois qu'il n'y a plus rien qui tourne sur le système à part le Linux volatile qui est en RAM.
    - tadam !

    Ou alors j'ai raté une contrainte supplémentaire

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    ce qui me gène dans ta proposition c'est que si j'éteins l'alim du processeur ba ... on éxécute plus rien... mais je pense que ça doit se faire coté noyau... c'est un peu trop bas niveau, ça correspond pas à l'appui sur le bouton de l'alim sur un PC c'est plus l'opération qui vient couper l'alim de l'ordi ... mais "il doit y avoir une interface pour ça" dans le noyau

  12. #12
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Oui tu as raison, j'ai pas trop réfléchi. Le système a beau être arrêté, la carte reste alimentée.

    Et du côté de
    ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    le problème reste entier... la carte ne peux pas s'arréter... Linux n'est pas omnicient. J'utilise une carte électronique propriétaire avec des fonctionnalités et architectures électronique non standard... donc ce que je cherche c'est à modifier le code qui éteint Linux enfin bref c'est peut etre trop spécifique... je vais chercher de mon coté et si je trouve je ferais un signe.

  14. #14
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Oui c'est ce que je craignais également.
    Si tu trouves l'info je suis preneur. La solution m'intéresse !
    Mais j'imagine qu'il faudrait que l'alimentation puisse se contrôler numériquement depuis le proc. Genre, dans 5 secondes tu te coupes. Ça doit effectivement dépendre de ta carte.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    en fait c'était pas très compliqué a trouvé j'avais juste pas penser à regarder dans le noyau...
    donc en recherchant un peu j'ai trouvé dans "linux/include/linux/reboot.h":
    /*
    * Architecture-specific implementations of sys_reboot commands.
    */
    extern void machine_restart(char *cmd);
    extern void machine_halt(void);
    extern void machine_power_off(void);

    extern void machine_shutdown(void);
    struct pt_regs;
    extern void machine_crash_shutdown(struct pt_regs *);

    après vérification chacune de ces fonctions sont appeler à la fin de celle (quasiment du même nom) qui sont standard pour toutes les architectures, donc c'est ce que je cherche.
    Ensuite savoir comment on les définies et comment ça doit marcher... mais c'est ce que je cherchais

  16. #16
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Ah ok ! Bon à savoir

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    j'ai aussi une autre solution :
    j'ai trouvé des sources d'un "reboot" donc en adaptant ça on doit pouvoir faire les adaptations que l'on veut (enfin à explorer quand même) et ça évite de changer le noayau (même si je suis pas contre)
    voila pour les curieux
    http://src.gnu-darwin.org/src/sbin/reboot/reboot.c.html

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extinction et redémarrage automatique serveur linux?
    Par js8bleu dans le forum Administration système
    Réponses: 12
    Dernier message: 06/12/2007, 08h29
  2. [Réseau] Problème Serveur Client TCP linux embarqué
    Par FabienpERRIN dans le forum Réseau
    Réponses: 2
    Dernier message: 31/07/2007, 20h47
  3. Probleme Tache Serveur et Client TCP Linux Embarque
    Par FabienpERRIN dans le forum Réseau
    Réponses: 1
    Dernier message: 30/07/2007, 11h53
  4. Gérération d'un filesystem à la compilation du noyau pour linux embarqué
    Par fabpomme dans le forum Administration système
    Réponses: 1
    Dernier message: 14/04/2007, 15h59
  5. Linux Embarqué
    Par nicolaskarp dans le forum Linux
    Réponses: 10
    Dernier message: 19/03/2006, 12h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo