Si je comprends bien votre question, cet article ressemble à ce que vous recherchez. L'article est intitulé :Pilotes de périphériques dans l'espace utilisateur.
extrait
Pilotes UIO
Linux fournit un cadre UIO (E/S utilisateur) standard pour développer des pilotes de périphériques basés sur l'espace utilisateur. Le framework UIO définit un petit composant de l'espace noyau qui effectue deux tâches clés :
- un. Indiquez les régions de mémoire de l'appareil à l'espace utilisateur.
- b. Enregistrez-vous pour les interruptions de périphérique et fournissez une indication d'interruption à l'espace utilisateur.
Le composant UIO de l'espace noyau expose ensuite le périphérique via un ensemble d'entrées sysfs telles que /dev/uioXX. Le composant d'espace utilisateur recherche ces entrées, lit les plages d'adresses du périphérique et les mappe à la mémoire de l'espace utilisateur.
Le composant d'espace utilisateur peut effectuer toutes les tâches de gestion de périphérique, y compris les E/S à partir du périphérique. Cependant, pour les interruptions, il doit effectuer une lecture bloquante() sur l'entrée du périphérique, ce qui fait que le composant du noyau met l'application de l'espace utilisateur en veille et la réveille une fois qu'une interruption est reçue.
Je n'ai jamais fait cela auparavant, donc je ne peux pas vous offrir beaucoup plus de conseils que cela, mais j'ai pensé que cela pourrait être utile dans votre quête.
Pensant dans le même sens que @RBerteig, le BeagleBone Black contient des microcontrôleurs 32 bits Programmable Real-Time Unit (PRU).
Il ne semble pas qu'il y ait une énorme communauté utilisant ces choses à pleine capacité. Je ne suis même pas sûr qu'il existe un bon compilateur pour cela. Les avantages par rapport à un assemblage d'un SBC et d'un microcontrôleur ou d'une carte de microcontrôleur sont que le code PRU peut provenir de l'ARM principal et que la mémoire partagée est assez pratique.
Je ne peux pas dire que j'ai utilisé cela, ou même que j'ai déjà exécuté plus que quelques exemples sur mes BeagleBone Blacks, mais les besoins exprimés dans cette question pourraient être l'une de ces choses qui peuvent pousser un développeur avec ces besoins vers le Noir et loin du Pi.