Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/10/2008, à 16:10

VOldo

Communication avec un module home-made

Salut à vous!

J'ai programmé un petit module en c (pour communiquer avec un basicstamp par le port série).
Celui-ci fonctionne, est chargé en mémoire, mais je suis coincé(je n'ai rien trouvé traitant de ce sujet sur internet) sur une chose qui à mon avis est toute simple:

Comment faire communiquer un autre programme codé en c(ou un autre langage) avec ce module???


Merci de m'éclairer

Edit:
Pour clarifier la chose prenons un petit exemple:
Mon module contient une fonction qui permet d'écrire sur le port série ( writeData(); ) et je voudrais pouvoir mettre à disposition l'acces à cette fonction à des programmes appelants!

Hors ligne

#2 Le 05/10/2008, à 19:50

Link31

Re : Communication avec un module home-made

Il faudrait savoir ce que tu appelles un module. Est-ce un module noyau, ou une bibliothèque, ou un plugin ?

Si c'est un module noyau, tu peux utiliser sysfs, procfs ou un fichier de périphérique. Si c'est une bibliothèque, il suffit de compiler ton programme avec et d'appeler ses fonctions. Si c'est un plugin, il faut le charger avec libdl, récupérer la fonction qui t'intéresse puis l'appeler.

Hors ligne

#3 Le 06/10/2008, à 17:02

VOldo

Re : Communication avec un module home-made

Après recherche(faut bien sélectionner ses mots avec google), j'ai trouvé un bon tuto qui explique comment créer un lien avec le mode utilisateur (les appels systèmes) donc tout est ok maintenant big_smile

Merci à vous

Dernière modification par VOldo (Le 06/10/2008, à 17:28)

Hors ligne

#4 Le 06/10/2008, à 17:55

Link31

Re : Communication avec un module home-made

big_smile

Tu imagines le bordel si chaque driver définissait ses propres syscalls ? Oui, ça fonctionne, mais ce n'est pas ce que j'appellerais une bonne méthode, ou un bon tuto.

Puisqu'il s'agit d'un module noyau, fais comme tous les modules noyau : au choix :
- sysfs
- procfs (déprécié, à éviter)
- un fichier de périphérique

edit : évidemment, tu peux aussi implémenter les appels système "normaux", du type read(), write()... Ce qui revient à définir un fichier de périphérique, mais bon... Comme j'avais cru comprendre que tu voulais rendre ta fonction writeData() disponible depuis l'userspace, je préfère te conseiller de ne pas en faire un nouveau syscall si c'est ce que tu comptais faire.

Dernière modification par Link31 (Le 06/10/2008, à 17:59)

Hors ligne

#5 Le 07/10/2008, à 14:16

VOldo

Re : Communication avec un module home-made

Salut!

En fait je me suis mal exprimé:

le tuto explique comment monter un fichier dans /dev. quand l'utilisateur appel sur ce fichier les open() writr() read(), cela redirige ses appels vers mes fonctions contenues dans le module.


Edit le tuto que j'ai survolé:
http://www.milw0rm.com/papers/203

Dernière modification par VOldo (Le 07/10/2008, à 15:54)

Hors ligne