User avatar
merlus
Posts: 16
Joined: Wed Aug 08, 2012 5:32 pm
Location: France - Britany

Méthode utilisation GPIO

Mon Dec 10, 2012 9:27 pm

Je souhaiterai connaître l'avis de spécialistes sur l'utilisation des GPIOs du RaspBerry Pi.

J'ai commencé à réaliser une application de test, en utilisant un fichier de librairie Gpio.c et Gpio.h.
Cette "librairie" Gpio est réalisée en manipulant directement les registres du RaspBerry.
// Open the master /dev/memory device
if ((fd = open ("/dev/mem", O_RDWR | O_SYNC) ) < 0)
{
fprintf (stderr, "wiringPiSetup: Unable to open /dev/mem: %s\n", strerror (errno)) ;
return -1 ;
}


....
if(0 < pin < 32 )
register_to_pin = 0;
else if(31< pin < 54 )
register_to_pin = 1;

if(value == 1)
*(gpio + (GPIO_PIN_OUTPUT_SET_REGISTER_0 + register_to_pin)) = 1 << (pin & 31);
else
*(gpio + (GPIO_PIN_OUTPUT_CLEAR_REGISTER_0 + register_to_pin)) = 1 << (pin & 31) ;


Est-ce une bonne méthode, ou faut-il absolument utiliser les modules du noyau:
echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction


Les modules du noyau me paraissent moins ouverts,mais offrent l'assurance de protéger l'accès au périphérique.

Qu'en pensez-vous?
- Launix -

trouch
Posts: 310
Joined: Fri Aug 03, 2012 7:24 pm
Location: France
Contact: Website

Re: Méthode utilisation GPIO

Mon Dec 10, 2012 10:30 pm

en passant par /dev/mem, tu tapes directement les registres du SoC.
c'est plus rapide, mais attention car tu peux faire tout et n'importe quoi.

l'avantage de passer par le driver /sys/class/gpio, c'est d'empecher de faire n'importe quoi en gagnant en simplicité.
par contre, les echo depuis le shell sont loin d'être efficace.

il y a une troisieme option qui consite à écrire un programe (C/Python/...) qui va utiliser le driver :

Code: Select all

fd = open("/sys/class/gpio/gpio0/value")
write(fd, "1")
sera plus rapide que de faire

Code: Select all

echo "1" > /sys/class/gpio/gpio0/value

WebIOPi - Raspberry Pi REST Framework to control your Pi from the web
http://store.raspberrypi.com/projects/webiopi
http://code.google.com/p/webiopi/
http://trouch.com

jelopo
Posts: 1601
Joined: Wed Oct 17, 2012 7:53 pm

Re: Méthode utilisation GPIO

Tue Dec 11, 2012 1:08 pm

Bonjour,
A mon avis il n'y a pas forcément de bonne ou de mauvaise méthode. Cela dépend aussi du projet global dans lequel se fait l'accès au GPIO ainsi que l'utilisation que tu souhaites en faire. A priori, plus le niveau d'accès se fait dans les couches hautes, plus on minimise les risques de conflits. Il y a multitude de possibilités d'accès aux GPIO voir par exemple http://elinux.org/RPi_Low-level_peripherals.

User avatar
merlus
Posts: 16
Joined: Wed Aug 08, 2012 5:32 pm
Location: France - Britany

Re: Méthode utilisation GPIO

Thu Dec 13, 2012 9:08 pm

Oui, c'est pas si évident. La méthode la plus sûre pour mon application, semble être l'utilisation des modules gpio.
- Launix -

Return to “Français”