Comment puis-je exposer appel noyau sensor_read()
à l'espace utilisateur et lire ces données depuis l'espace utilisateur? Il est fort probable que vous utilisiez la structure de noyau IIO, car elle est spécialement conçue pour l'écriture de pilotes de capteurs. IIO expose les fichiers nécessaires pour votre pilote (dans /sys/bus/iio/
et /dev/iio*
). Vous pouvez read()
ces fichiers, ou poll()
eux (pour gérer les interruptions). La documentation officielle est disponible here. Vous pouvez également utiliser certains pilotes existants comme référence, regardez ici: drivers/iio/.
Avant l'introduction du framework IIO, il était courant de fournir des fichiers sysfs pour les pilotes manuellement. Donc, si vous utilisez un noyau assez ancien, cela devrait être le moyen d'écrire le pilote: gérer votre bus (comme I2C) et les fichiers sysfs manuellement. Mais encore, le meilleur moyen est d'utiliser le nouveau noyau et IIO.
Je travaille sur un capteur Gyro + Accel. Le pilote Linux enverra des événements de type EV_MSC pour les deux
Il n'est pas inhabituel que la puce ait plus d'un capteur. Dans ce cas, vous devez créer deux pilotes différents: un pour l'accéléromètre, et un pour le gyro. De cette façon, vous aurez deux fichiers différents, un fichier par capteur.
Par exemple, regardez comment il est fait pour la puce LSM330DLC (accéléromètre + gyroscope):
Les deux pilotes appellent iio_device_register()
fonction de la fonction de sonde du pilote, qui crée les fichiers correspondants (que vous pouvez lire/interroger). Reportez-vous au documentation pour plus de détails. Selon ma compréhension, j'ouvrirai les deux périphériques d'entrée depuis l'espace utilisateur et je l'ajouterai ensuite à la liste des FD que nous voulons interroger. Alors, quand il y a un nouvel événement, comment puis-je déterminer si cet événement vient de Gyro ou d'Aceel?
Il y a plusieurs façons d'y arriver. Mais vous n'avez même pas dit de quel capteur vous aimez lire. Que diriez-vous d'utiliser 'lm-sensor'? Ensuite, vous voulez envoyer des données à un nuage qui est une histoire complètement différente. KeyWord: common-gateway-interface (cgi) – suleiman
Merci suleiman .. Je travaille sur un capteur Accl-Gyro. Je vais vérifier lm-capteur. La partie Cloud est déjà terminée et nécessite l'implémentation des API cloud exposées. –