Pour un projet industriel, nous devons gérer 8 entrées/sorties tout ou rien (TOR). Le noyau Linux, s’il est correctement configuré et compilé permet de gérer ces E/S au travers d’une interface de type fichier. Les notes qui suivent permettent de gérer ces E/S.
Il faut tout d’abord vérifier que les options de compilation du noyau concernant la gestion des GPIO à travers le système de fichier « sysfs » sont activées.
Après démarrage de la carte TQ6410, nous pouvons vérifier que nous avons accès aux GPIOs en tapant:
1 2 3 4 5 |
root@TQ6410-Iris:~# ls /sys/class/gpio/ export gpiochip137 gpiochip178 gpiochip38 gpiochip9 gpiochip0 gpiochip144 gpiochip194 gpiochip55 gpiochip91 gpiochip104 gpiochip161 gpiochip26 gpiochip63 unexport gpiochip121 gpiochip17 gpiochip32 gpiochip74 |
On ne trouve pas directement d’accès aux broches (répertoire gpioXXX) mais des répertoires gpiochipXXX. Pour comprendre le fonctionnement des GPIOs il faut lire la documentation fournie dans les sources du noyau ou sur le site kernel.org : http://www.kernel.org/doc/Documentation/gpio.txt
Ci-dessous un extrait qui correspond à nos attentes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
Paths in Sysfs -------------- There are three kinds of entry in /sys/class/gpio: - Control interfaces used to get userspace control over GPIOs; - GPIOs themselves; and - GPIO controllers ("gpio_chip" instances). That's in addition to standard files including the "device" symlink. The control interfaces are write-only: /sys/class/gpio/ "export" ... Userspace may ask the kernel to export control of a GPIO to userspace by writing its number to this file. Example: "echo 19 > export" will create a "gpio19" node for GPIO #19, if that's not requested by kernel code. "unexport" ... Reverses the effect of exporting to userspace. Example: "echo 19 > unexport" will remove a "gpio19" node exported using the "export" file. GPIO signals have paths like /sys/class/gpio/gpio42/ (for GPIO #42) and have the following read/write attributes: /sys/class/gpio/gpioN/ "direction" ... reads as either "in" or "out". This value may normally be written. Writing as "out" defaults to initializing the value as low. To ensure glitch free operation, values "low" and "high" may be written to configure the GPIO as an output with that initial value. Note that this attribute *will not exist* if the kernel doesn't support changing the direction of a GPIO, or it was exported by kernel code that didn't explicitly allow userspace to reconfigure this GPIO's direction. "value" ... reads as either 0 (low) or 1 (high). If the GPIO is configured as an output, this value may be written; any nonzero value is treated as high. If the pin can be configured as interrupt-generating interrupt and if it has been configured to generate interrupts (see the description of "edge"), you can poll(2) on that file and poll(2) will return whenever the interrupt was triggered. If you use poll(2), set the events POLLPRI and POLLERR. If you use select(2), set the file descriptor in exceptfds. After poll(2) returns, either lseek(2) to the beginning of the sysfs file and read the new value or close the file and re-open it to read the value. "edge" ... reads as either "none", "rising", "falling", or "both". Write these strings to select the signal edge(s) that will make poll(2) on the "value" file return. This file exists only if the pin can be configured as an interrupt generating input pin. "active_low" ... reads as either 0 (false) or 1 (true). Write any nonzero value to invert the value attribute both for reading and writing. Existing and subsequent poll(2) support configuration via the edge attribute for "rising" and "falling" edges will follow this setting. GPIO controllers have paths like /sys/class/gpio/gpiochip42/ (for the controller implementing GPIOs starting at #42) and have the following read-only attributes: /sys/class/gpio/gpiochipN/ "base" ... same as N, the first GPIO managed by this chip "label" ... provided for diagnostics (not always unique) "ngpio" ... how many GPIOs this manges (N to N + ngpio - 1) |
Regardons ce que l’on obtient avec les commandes suivantes sur le contrôleur GPIO 137 :
1 2 3 4 5 6 7 8 |
root@TQ6410-Iris:~# cat /sys/class/gpio/gpiochip137/ base label ngpio subsystem/ uevent root@TQ6410-Iris:~# cat /sys/class/gpio/gpiochip137/label GPM root@TQ6410-Iris:~# cat /sys/class/gpio/gpiochip137/base 137 root@TQ6410-Iris:~# cat /sys/class/gpio/gpiochip137/ngpio 6 |
Le label contient GPM : c’est le nom du port de sortie du S3C6410 donc le port M. Si je regarde sur le schéma électrique de la carte (disponible au format PDF en fin d’article), je trouve que le port M est constitué de 6 broches (GPM0 à GPM5) et que les lignes GPM0 à GPM3 sont aussi identifiées par nLED1 à nLED4 (ce sont des DELs disponibles sur la carte pilotées au travers d’un transistor). L’adresse de base de ce port commence à 137. Donc la première broche de ce port (GPM0) aura comme numéro 137. « ngpio » contient le nombre d’E/S de ce port : ici 6 ce qui correspond bien au schéma électrique. La broche GPM5 aura donc comme numéro 142.
Il faut maintenant créer l’accès à une broche. Par exemple la GPM0 donc la numéro 137 (ainsi on pourra visualiser le fonctionnement sur une DEL). Il faut donc « créer » cette broche puis regarder ce que le noyau met à notre disposition:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
root@TQ6410-Iris:~# echo 137 > /sys/class/gpio/export root@TQ6410-Iris:~# ls /sys/class/gpio/ export gpiochip121 gpiochip17 gpiochip32 gpiochip74 gpio137 gpiochip137 gpiochip178 gpiochip38 gpiochip9 gpiochip0 gpiochip144 gpiochip194 gpiochip55 gpiochip91 gpiochip104 gpiochip161 gpiochip26 gpiochip63 unexport root@TQ6410-Iris:~# ls /sys/class/gpio/gpio137/ direction subsystem uevent value |
Si la création de la broche s’est dérouler correctement un nouveau répertoire est créé avec le nom de la broche (ici gpio137). Le répertoire contient alors tout ce qu’il faut pour piloter cette broche. « direction » permet de mettre cette broche en entrée ou en sortie (en écrivant « in » ou « out »). « value » permet de positionner (en écrivant ‘0’ ou ‘1’) ou de lire la valeur de la broche. Les commandes suivantes permettent de positionner la broche 137 en sortie puis d’écrire un ‘0’ ou un ‘1’ sur celle-ci :
1 2 3 4 5 |
root@TQ6410-Iris:~# echo "out" > /sys/class/gpio/gpio137/direction root@TQ6410-Iris:~# echo "1" > /sys/class/gpio/gpio137/value root@TQ6410-Iris:~# echo "0" > /sys/class/gpio/gpio137/value |
Les dernières commandes allument/éteignent la del LED1 sur la carte. Il suffit maintenant de faire des opérations de lecture/écriture sur fichier pour commander une sortie ou lire une entrée. Notez qu’après un redémarrage les « gpio » ne sont pas conservés.
Pour compléter l’article, il faut lire Howto use GPIO signals et en particulier le code C de gestion des GPIOs .
basic sample affirmative action plan No Doctor Order Colcrys Yasmin And Fatigue Birth Control Pill free casino aol. Norvasc And Benadryl Donepezil No Prescription Magnesium Proscar Prostate Massage Migraine Cranberry Juice . generic wellbutrin 2007 jelsoft enterprises ltd Allergy Testing Physicians . Diabetes In Spanish Latinos Ld50 Ibuprofen Dog prism casino bonus code Glucovance Internet Consultation Effexor And Autism Imodium For Ibc Accutane For Dermatitis
Ping : Electronique Innovante » RaspberryPi à tout faire…
Ping : ugg classic tall boho patchwork
??????????? ????? ?? http://meihinnet.jp/jpraybanshop.html
Louis Vuitton Replica baggage you might be a affordable handbag lover like most women, you would be conscious in the popular on the internet retailer ??Purse Heaven’. They offer amazing designs for handbags and purses. The low-cost purse you prefer might be among the a variety of designs they market.
louis vuitton handbags cheap louis vuitton replica purses louis vuitton fabric zippers wholesale cheap louis vuitton shoes cheap louis vuitton purses the best place to buy cheap louis vuitton replica shoes online louis vuitton wallet sale replica louis vuitton wallet louis vuitton factory outlet china louis vuitton purses zara usa lv jansport outlet backpacks louis vuitton cheap belts for sale louis vuitton replica belt cheap red louis vuitton shoes kanye west price louis vuitton for sale louis vuitton official website mens louis vuitton alma mm for cheap replica louis vuitton wallet mens louis vuitton damier belt for sale buy louis vuitton scarf online sale malaysia
vintage louis vuitton http://www.micheleslakehouse.com/vintagelouisvuitton/