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
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
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 ?
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..)
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
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager