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 :

drivers usb et ioctl


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Par défaut drivers usb et ioctl
    Bonjour,

    je suis en train de porter un drivers usb depuis windows sur un UBUNTU 9.04.

    le plus gros du travail est fait.
    malheureusement, je n'arrive pas a dialoguer avec mon pilote via les IOCTL.
    pourtant j'ai suivi à la lettre tout ce que j'ai compris du livre "Linux Device Drivers, Third Edition".

    lorsque je fait un IOCTL, je reçois toujours une réponse négative, avec le errno a ENOTTY.

    en lançant mon programme à l'aide de strace, je trouve bien le code de mon IOCTL perso.

    je ne comprend pas d'ou cela vient.
    si quelqu'un a une idée? une piste?

    voici quelques bout de codes:
    définitions dans un .h commun
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define TEST_CONST	0xF9
    #define TEST_IOCTL_NBR_DEVICES			_IOWR(TEST_CONST, 0,void *)
    code du drivers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    struct file_operations 
    	Fops =	{
    			.owner =	THIS_MODULE,
    			.read = 	test_read,
    			.ioctl = test_ioctl,
    			.open = test_open,
    			.release = test_release,
    			};
    //dans l'init du drivers
    register_chrdev(253,DEVICE_NAME,&Fops);
    dans le programme exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int hTest = -1;
    int result = -1;
     
    hEXX=open("/dev/TEST_CTL",0);
    if (hEXX < 0)
         return -1;
     
    result=ioctl(hEXX,TEST_IOCTL_NBR_DEVICES,NULL);
    if( result == -1)
         return errno;
     
    return 0;
    merci d'avance!

  2. #2
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Par défaut
    re bonjour,

    j'ai voulu faire un pilote à partir de "usb-skeleton.c", pensant que l'erreur était dans l'ancien pilote. mais j'ai exactement le même problèmes...

    personne pour m'aider?
    ou juste me donner une piste à explorer!

  3. #3
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Par défaut
    donne le code entier, ce sera plus simple !
    ou alors si tu ne peux pas, au moins le code de l' ioctl.

  4. #4
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Par défaut
    voila tout le code.

    merci pour l'aide!
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Par défaut
    bon, alors voila :

    mon pilote exemple "fonctionne". il m'as juste suffit de faire un "man mknod" pour comprendre mon erreur.

    par contre, le mknod de l'ancien pilote est bien le bon. la différence se situe plus au niveau des fonctions d'attache du pilote au noyau. je comprend pas ce qui est fait, mais l'ancien pilote utilise les fonctions :
    - usb_register
    - register_chrdev

    alors que le pilote exemple utilise seulement usb_register.

    une autre différence aussi, l'ancien pilote utilise un "major" alors que le pilote exemple utilise un "minor".

    est ce que ces différences sont significative ou pas?

    merci

Discussions similaires

  1. driver USB
    Par k_boy dans le forum Périphériques
    Réponses: 1
    Dernier message: 07/02/2006, 09h58
  2. problème d'install de drivers USB
    Par dirty_boy dans le forum Périphériques
    Réponses: 7
    Dernier message: 19/01/2006, 15h03
  3. utilisation d'un driver USB
    Par AiSpirit dans le forum Windows
    Réponses: 8
    Dernier message: 07/01/2006, 02h02
  4. Appeler un driver USB via une interface.
    Par HR100 dans le forum Langage
    Réponses: 1
    Dernier message: 19/12/2005, 23h38
  5. [driver] USB pour Win NT4
    Par bidou dans le forum Ordinateurs
    Réponses: 5
    Dernier message: 23/03/2005, 11h42

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