MagPI 7 Page 12

De Le French MagPi
Aller à : Navigation, rechercher

Interruptions et autres activités avec les broches du GPIO

Comment partager les ressources du GPIO entre plusieurs applications, et utiliser les interruptions pour remplacer le gaspillage que sont les boucles de contrôle d'état.

Après quelques expériences de début dans lesquelles un Raspberry Pi pilote des DELs et lit l'état d'interrupteurs, quand l'euphorie du "Ça marche !" s"évanouit, les utilisateurs astucieux peuvent facilement comprendre qu'ils vont rencontrer des problèmes lorsqu'ils vont entreprendre d'étendre ces programme simples à des environnements plus complexes.

Je vais aborder deux de ces questions ici : comment partager les ressources du GPIO entre plusieurs applications, et utiliser les interruptions pour remplacer le gaspillage que sont les boucles de contrôle d'état.

Il y a eu une effrayante quantité d'instructions "Exécutez ce programme en tant que root" publiées pour les utilisateurs de Raspberry Pi. Pour un utilisateur expérimenté, ça ressemble plutôt à : "Tiens, gamin. Voila des lames de rasoir. Emmène-les et regarde ce que tu peux couper avec."

Le privilège root ne devrait être utilisé qu'en dernier recours. Son utilisation normale est la création du système et la configuration - l'établissement d'un environnement protégé où les erreurs dans un programme n'affectent pas les autres applications, et ne peuvent pas provoquer un plantage du système. Au pire, un programme d'utilisateur qui plante ne devrait compromettre que les ressources allouées à ce programme.

Linux possède un nombre important de pilotes de matériel, programmes intégrés au noyau qui assurent l'interface entre les ressources matérielles et les applications. Les systèmes de fichier sont un bon exemple. Il fournissent des fonctions conviviales comme ouvrir un fichier, lire, écrire, alors qu'ils gèrent les accès matériels et maintiennent les structures de données nécessaires pour allouer et libérer l'espace disque, partager l'accès de manière appropriée entre plusieurs programmes, et gérer la récupération de données après des évènements comme les coupures de courant.

Le privilège root facilite les interactions avec les activités du système. Si vous êtes chanceux, le résultat est une panique immédiate et un plantage système. Dans des circonstances moins favorables, un logiciel malicieux pourrait être installé dans le système : ce logiciel peut alors communiquer via une connexion Internet avec des criminels à la recherche d'informations personnelles ou qui pourraient exploiter votre Raspberry Pi pour des activités néfastes.

Linux dispose de moyens génériques pour gérer les ressources du GPIO. Il crée une interface pratique à manipuler par les programmes utilisateurs, protège les ressources GPIO utilisées par les pilotes comme I2C et SPI, et fournit un accès spécifiques aux broches du GPIO, de façon telle qu'une application n'a pas à s'inquiéter de ce que d'autres programmes peuvent faire avec les autres broches du GPIO. Cet accès individuel aux broches du GPIO est important, parce que sans lui, chaque application gérant le GPIO devrait surveiller les accès concurrents des autres applications partageant des broches du GPIO (verrous, gestion des interruptions, et autres casse-têtes à mettre en place).


Le service GPIO sous Linux utilise des fichiers présents dans le répertoire /sys/class/gpio/. Oui, comme beaucoup d'autres fichiers de configuration système ou de contrôle, ces fichiers appartiennent au root. Je n'en tiendrai pas compte pour l'instant, pour rendre la description de cette interface plus facile. Je vous promets d'y revenir plus tard et vous présenterai un utilitaire pour encapsuler les opérations privilégiées de manière responsable.

Configuration des broches

La commande echo est couramment utilisée dans les procédures shell pour afficher des messages sur la sortie standard, ou avec une redirection pour écrire dans un fichier. Par exemple :

echo Salut tout le monde.
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils