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 :

Périphérique tactile usb


Sujet :

Linux

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut Périphérique tactile usb
    Bonjour,

    Je cherche à faire un driver pour un périphérique tactile branché en usb.
    Pour cela j'aimerai savoir comment pouvoir récupérer les données émises par le périphérique, quel module/driver utiliser ou creer.

    Merci

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Si j'ai bien compris, la procédure a suivre serai la suivante :

    -trouver le nom du périphérique lorsque je le branche.
    -désactiver le module usbtouchscreen qui se lance automatiquement (je veut que seul mon module gère le périphérique).
    -affecter le périphérique à une node que je cré.
    -affecter la node a mon module.

    J'ai obtenu les numéros du périphérique (constructeur et produit), comment les utiliser pour les relier a un node ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Ce que je voudrai savoir, si quelqu'un peu m'aider, c'est comment définir quel module lancer pour un périphérique connu (numéro vendor, product etc..)

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    Est-ce que quelqu'un à déja réalisé un driver pour un périphérique en mode de transmission "interrupt" ?
    J'aimerai avoir un exemple d'un tel programme. J'ai trouvé un programme squelette d'un driver mais il s'agit d'un en mode "bulk"...

    Merci

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Je re-post au même endroit comme il s'agit toujours du même thème..

    J'ai récupérer le source d'un module déja existant (du moins sur Debian) : usbtouchscreen. J'y ai ajouté la gestion des ioctl et de quoi le faire communiquer sur un fichier node (dans /dev).
    A coté de ça, j'essaye de faire un programme (partie utilisateur donc) pour calibrer la dalle tactile, en utilisant l'ioctl par le node.

    La compilation et l'execution du module se fait avec quelques warnigs:

    test4.o - Section mismatch: reference to .init.text: from .data between 'fops' (at offset 0x1d0) and '__mod_usb_device_table'
    test4.o - Section mismatch: reference to .exit.text: from .data between 'fops' (at offset 0x1d8) and '__mod_usb_device_table'

    mais il fonctionne.
    Lorsque que j'essaye juste d'ouvrir le fichier node (fonction open) et de le refermer, j'ai une erreur d'EIP. j'ai utilisé la commande gcc -g pour "suivre" l'avancement et j'obtiens :

    (gdb) run
    Starting program: /home/utilisateur/Desktop/test_usbtouchscreen/testuser
    Failed to read a valid object file image from memory.

    puis des messages de syslogd@debian que je peux retrouver avec "dmesg":

    <1>BUG: unable to handle kernel NULL pointer dereference at virtual address 0000000b
    printing eip:
    0000000b
    *pde = 00000000
    Oops: 0000 [#7]
    SMP
    Modules linked in: test4 i915 drm ppdev lp button ac battery ipv6 dm_snapshot dm_mirror dm_mod snd_intel8x0 snd_ac97_codec snd_ac97_bus joydev snd_pcm_oss snd_mixer_oss parport_pc parport floppy snd_pcm rtc psmouse snd_timer i2c_i801 serio_raw pcspkr i2c_core intel_agp agpgart snd soundcore snd_page_alloc shpchp pci_hotplug tsdev evdev ext3 jbd mbcache ide_cd cdrom ide_disk generic usbhid ehci_hcd 8139too mii piix ide_core uhci_hcd usbcore thermal processor fan
    CPU: 0
    EIP: 0060:[<0000000b>] Tainted: P VLI
    EFLAGS: 00210286 (2.6.18-6-686 #1)
    EIP is at 0xb
    eax: c85dcce0 ebx: 00000000 ecx: e03994a0 edx: ccda5780
    esi: c7d2c4c0 edi: 00000000 ebp: c85dcce0 esp: c1aa5ef0
    ds: 007b es: 007b ss: 0068
    Process testuser (pid: 15356, ti=c1aa4000 task=d4334aa0 task.ti=c1aa4000)
    Stack: c0161879 ccda5780 c1aa5f3c ccda5780 c85dcce0 00000000 c0161753 c0158b45
    c14680c0 c6c56534 ccda5780 c1aa5f3c b7f24cc0 00000006 c0158c8d ccda5780
    00000000 00000002 c0158cc7 c6c56534 c14680c0 00000000 b7f0e400 cf8eeef0
    Call Trace:
    [<c0161879>] chrdev_open+0x126/0x141
    [<c0161753>] chrdev_open+0x0/0x141
    [<c0158b45>] __dentry_open+0xc8/0x1ac
    [<c0158c8d>] nameidata_to_filp+0x19/0x28
    [<c0158cc7>] do_filp_open+0x2b/0x31
    [<c0158d0b>] do_sys_open+0x3e/0xb3
    [<c0158dad>] sys_open+0x16/0x18
    [<c0102c11>] sysenter_past_esp+0x56/0x79
    Code: Bad EIP value.
    EIP: [<0000000b>] 0xb SS:ESP 0068:c1aa5ef0


    alors si quelqu'un a une idée d'où ça peut provenir..

    Merci

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Toujours personne?
    Je pense que le problème vient de l'allocation mémoire vis-à-vis du module et du programme.
    Je cherche à envoyer un tableau de valeur par ioctl, et pour cette fonction je me suis inspiré de ce site : http://www.linuxtopia.org/online_boo...uide/x872.html
    Est-t-il fiable ?

    J'arrive a envoyer un seul caractère par ioctl, mais lorsqu'il s'agit d'un tableau, j'ai un débordement mémoire (comme celui du post précédent) des que je souhaite accéder au 2e caractère.

    Comment puis-je faire pour y remédier?

    Merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/04/2015, 12h47
  2. Attendre une réponse du périphérique USB
    Par Arnaud Malabeux dans le forum C++
    Réponses: 6
    Dernier message: 17/06/2006, 23h45
  3. demonter les périphérique USB par la ligne de commande.
    Par Essilife dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 20/01/2006, 12h50
  4. installation de driver pour périphériques USB
    Par devmat dans le forum Windows XP
    Réponses: 6
    Dernier message: 14/01/2006, 15h19
  5. [USB] Comment déconnecter un périphérique USB ?
    Par frelep dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 22/09/2005, 10h33

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