IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Développement de drivers


Sujet :

Linux

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 65
    Par défaut Développement de drivers
    Bonjour,

    Je doit développé une application pour linux permettent de gérrer des procesus temps réel de bas niveau et qui est commandé par une interface graphique.

    J'ai plusieurs composant matérielle à gérrer et je doit donc écrire une partie de mon application dans l'espace noyau afin d'accéder au entrée sortie de mon processeur. Ma question est de savoir si il est plus simple et surtout plus performant (d'un point de vue de la latence) de regroupé les "drivers" de tous ces composants dans un seul module qui s'occupe de tous gérrer la partie bas niveau de façon temps réel ou si il faut crée un module pour chaque composant dans le vrai sens du mots driver puis de crée un module qui s'occupe de interraction entre ces drivers ?

    Ma deuxième question est de savoir quel sont les moyens les plus simple et les plus performant (toujours d'un point de vue de la latence) pour assurer la communication entre l'application de commande (espace utilisateur) et le ou les modules (espace noyau) ?

    Toutes pistes de réponse ou de documentation pouvant me permettre de m'informer un peut plus me sera très utile...

    Merci Jobe

  2. #2
    Membre éprouvé Avatar de gandalfar
    Inscrit en
    Novembre 2004
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 145
    Par défaut
    Moi je te conseil de faire un module pour chacun des devices c'est beaucoup plus propre.

    Au niveau de la communication userland kernelland fait ca a l aide de l api driver du kernel: par exemple pour les devices en mode charactere tu pourra avoir un write un read un open un close un ioctl un poll etc...

    Fait tes drivers génériques et après contrôle le tout en userland c'est pas gourmand en perf et c 'est plus propre. C'est en tout cas ce que je fait a chaque fois que je bosse sur de l'embarqué.

    documentation : Linux Device Driver 3 il est en pdf gratuit sur le web.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 65
    Par défaut
    oui on est d'accord que c'est plus propre et plus protégé mais en sachant que toute la boucle doit gérrer un système en temps réel ou la latence est réellement critique est ce une bonne idée ?

    De plus si j'applique ce modèle par quel moyen je peut faire communiquer le programme de gestion des drivers (superviseur) et l'application qui s'occupe de l'interface utilisateur ?

    MErci

    Jobe

  4. #4
    Membre éprouvé Avatar de gandalfar
    Inscrit en
    Novembre 2004
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 145
    Par défaut
    oui on est d'accord que c'est plus propre et plus protégé mais en sachant que toute la boucle doit gérrer un système en temps réel ou la latence est réellement critique est ce une bonne idée ?
    Oui car ca ne changera rien niveau perf tout tes bouts de code s executerons dans des process different et ce generons pas les uns les autres. de toute facon linux est pas preremptif, donc n'est pas temps reel. Si tu veux du vrai temps reel faut te tourner vers tu rtlinux ou du rtos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    De plus si j'applique ce modèle par quel moyen je peut faire communiquer le programme de gestion des drivers (superviseur) et l'application qui s'occupe de l'interface utilisateur ?
    bin un exemple bete si tu a une led tu peux fait un chardev dans par exemple /dev/led et la controler a l aide d ioctl...etc

  5. #5
    Membre éprouvé Avatar de gandalfar
    Inscrit en
    Novembre 2004
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 145
    Par défaut
    oui on est d'accord que c'est plus propre et plus protégé mais en sachant que toute la boucle doit gérrer un système en temps réel ou la latence est réellement critique est ce une bonne idée ?
    Oui car ca ne changera rien niveau perf tout tes bouts de code s executerons dans des process different et ce generons pas les uns les autres. de toute facon linux est pas preremptif, donc n'est pas temps reel. Si tu veux du vrai temps reel faut te tourner vers du rtlinux ou du rtos.

    De plus si j'applique ce modèle par quel moyen je peut faire communiquer le programme de gestion des drivers (superviseur) et l'application qui s'occupe de l'interface utilisateur ?
    bin un exemple bete si tu a une led tu peux fait un chardev dans par exemple /dev/led et la controler a l aide d ioctl...etc

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 65
    Par défaut
    Citation Envoyé par gandalfar
    Oui car ca ne changera rien niveau perf tout tes bouts de code s executerons dans des process different et ce generons pas les uns les autres. de toute facon linux est pas preremptif, donc n'est pas temps reel. Si tu veux du vrai temps reel faut te tourner vers du rtlinux ou du rtos.
    Je ne suis pas d'accord avec toi la transition espace utilisateur vers espace noyau est très couteuse en temps (appel système). Et oui j'utilise un applicatif temps réel: Xenomai

    Le chardev va fonctionné seulement entre un drivers et une application si j'ai deux application qui doivent communiquer ensemble je vois pas trop par quoi passé à moins d'utiliser un IPC ?!?

Discussions similaires

  1. Outils de développement de driver USB 64 bits
    Par algade87 dans le forum Windows
    Réponses: 1
    Dernier message: 20/09/2012, 16h18
  2. Guide de "bonnes pratiques" pour le développement de drivers Oracle
    Par Vincent Rogier dans le forum Interfaces de programmation
    Réponses: 0
    Dernier message: 19/07/2008, 20h44
  3. Réponses: 2
    Dernier message: 26/11/2007, 09h24
  4. Développement de driver en C++
    Par lio33 dans le forum Windows
    Réponses: 15
    Dernier message: 07/04/2006, 15h10
  5. [DRIVER]Développer drivers port serie virtuel
    Par f.colo dans le forum Windows
    Réponses: 9
    Dernier message: 21/02/2006, 08h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo