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

Raspberry Pi Discussion :

Accès à /dev/mem pour bcm2835


Sujet :

Raspberry Pi

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut Accès à /dev/mem pour bcm2835
    Bonjour,
    j'utilise un lecteur RFID RC522 sur un RPI. J'ai trouvé plusieurs librairies C ou C++ qui toutes utilisent le BCM2835 et nécessitent d'être super utilisateur pour fonctionner.
    A priori, les fonctions de cette lib cherchent à accéder à /dev/mem ou /dev/gpiomem.
    Version de mon RPI:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    VERSION_ID="10"
    VERSION="10 (buster)"
    VERSION_CODENAME=buster
    J'appartiens aux groupes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pi adm kmem dialout cdrom sudo audio video plugdev games users input netdev lpadmin gpio i2c spi
    ce qui devrait me permettre d'accéder aux devices (/dev), pour le bus I2C, je n'ai pas de problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    crw-rw----  1 root gpio   246,   0 févr.  5 07:17 gpiomem
    crw-rw----  1 root kmem     1,   1 févr.  5 07:17 mem
    crw-------  1 root root   248,   0 févr.  5 07:17 vc-mem
    J'ai essayé de placer le setuid bit et d'autres idées glanées dans les forums mais sans succès.
    Y a-t-il moyen de contourner ce problème?
    Ou connaissez-vous une lib qui n'impose pas d'utiliser sudo?

    Merci.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 596
    Points : 56 682
    Points
    56 682
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    Citation Envoyé par rdtech Voir le message
    j'utilise un lecteur RFID RC522 sur un RPI. J'ai trouvé plusieurs librairies C ou C++ qui toutes utilisent le BCM2835 et nécessitent d'être super utilisateur pour fonctionner.
    A priori, les fonctions de cette lib cherchent à accéder à /dev/mem ou /dev/gpiomem.
    Cette bibliothèque ne convient pas ?

    Running as root
    Prior to the release of Raspbian Jessie in Feb 2016, access to any peripheral device via /dev/mem on the RPi required the process to run as root. Raspbian Jessie permits non-root users to access the GPIO peripheral (only) via /dev/gpiomem, and this library supports that limited mode of operation.

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut
    Bonjour,
    je ne l'ai pas précisé mais j'ai un PI2. Sinon, j'ai essayé cette lib, je compile les exemples mais ce que je n'ai pas pu faire c'est ça:
    For this library to work correctly on RPI2, you MUST have the device tree support enabled in the kernel. You should also ensure you are using the latest version of Linux. The library has been tested on RPI2 with 2015-02-16-raspbian-wheezy and ArchLinuxARM-rpi-2 as of 2015-03-29.
    Dans les options avancées de raspi-config je n'ai pas la validation du support de ce device tree. J'ai fait un update de raspi-config mais ça ne change rien.
    J'ai atteint la limite de mes compétences en système... mais je vais persévérer un petit moment.
    Ou trouver un PI plus récent.

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 377
    Points : 19 048
    Points
    19 048
    Par défaut
    Salut à tous.

    Citation Envoyé par rdtech
    J'ai trouvé plusieurs librairies C ou C++ qui toutes utilisent le BCM2835 et nécessitent d'être super utilisateur pour fonctionner.
    J'ai deux solutions à te proposer.

    La première consiste à créer un alias que tu placeras dans le fichier "/home/pi/.bashrc".
    Cela évitera de taper à chaque fois "sudo" devant le nom de ton programme.

    L'autre solution est d'utiliser le "setuid bit user".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ~> touch test.sh
    ~> la test.sh
    -rw-r--r-- 1 pi pi 0 11 mars  02:40 test.sh
    ~> chmod +x test.sh
    ~> la test.sh
    -rwxr-xr-x 1 pi pi 0 11 mars  02:40 test.sh
    ~> sudo chown root test.sh
    ~> la test.sh
    -rwxr-xr-x 1 root pi 0 11 mars  02:40 test.sh
    ~> sudo chmod +s test.sh
    ~> la test.sh
    -rwsr-sr-x 1 root pi 0 11 mars  02:40 test.sh
    ~>
    Cette modification va permettre d'exécuter le programme "test.sh" avec les privilèges "root" tout en le lançant depuis le compte "pi", sans mettre "sudo" devant.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 377
    Points : 19 048
    Points
    19 048
    Par défaut
    Salut à tous.

    Citation Envoyé par rdtech
    je ne l'ai pas précisé mais j'ai un PI2.
    Moi aussi, j'ai une RPi 2B. Comme tu passes par la bibliothèque "bcm2835", elle sait gérer les différentes version.
    As tu mis ta version Raspberry Pi OS Buster à jour ?

    Comment as-tu fait pour obtenir l'avertissement de "device tree" ?

    Dans ton premier message, tu nous dis :
    Citation Envoyé par rdtech
    j'utilise un lecteur RFID RC522 sur un RPI.
    Il y a un paramétrage à faire dans le fichier "/boot/config.txt" !

    Ton module RFID RC522 de chez Joy-It, l'as-tu acheté chez Gotronic, ou est-ce le même produit :
    --> Module RFID 13,56 MHz TAG RC522.

    En lisant la fiche technique de chez Gotronic, vous devez activer le mode SPI.
    Dans le fichier "/boot/config.txt" doit apparaitre la ligne "dtparam=spi=on".

    L'exemple donné est en python.
    Rien ne vous empêche de le tester avec python, afin de savoir si les branchements sont correctes.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut
    Bonjour,
    à propos du device tree, c'est une info qui est notée dans la doc de la lib. Je l'ai citée dans mon message du 11/03.
    Dans /boot/config.txt, j'ai bien dtparam=spi=on
    Et pour finir, j'ai positionné le bit s sur mon exécutable, et ça fonctionne!
    Merci pour tes réponses.

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

Discussions similaires

  1. problemes d'accès à /dev/mem
    Par vfrifr dans le forum Administration système
    Réponses: 1
    Dernier message: 04/12/2006, 15h44
  2. [EasyPHP] [Directives] accés sous réseau pour ma page PHP
    Par StyleXP dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 14
    Dernier message: 21/01/2006, 18h57
  3. utiliser dev cpp pour debogger
    Par jeanfredd dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 28/09/2005, 17h30
  4. table acces champ mail pour mailing ???
    Par jockey1 dans le forum Access
    Réponses: 3
    Dernier message: 17/09/2005, 21h19
  5. Configurer MYSQL++ avec Dev-C++ pour une connexion à BDMySQL
    Par limouna dans le forum Installation
    Réponses: 1
    Dernier message: 24/07/2005, 21h25

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