You might want to see what debugging messages you've got being generated. 
Try reconfiguring syslogd to redirect 'kernel.debug' to a seperate logfile. 
Then, re-insert your hardware and the kernel will probe etc.

Also, I assume that the open and close calls are fine (no seg faults) but 
the write causes the problem? Try changing the write call to send a zero 
lengh buffer, this should be successfully caught by the skeleton and output 
some debugging.

Also, why bother taking the devfs stuff out, why not use it?

Steve

>From: friedt jean-michel <[EMAIL PROTECTED]>
>To: [EMAIL PROTECTED]
>Subject: [linux-usb-devel] basic USB driver help request
>Date: Mon, 28 Jan 2002 09:46:27 +0100
>
>I have just spent last week trying to write a driver for my (68HC08JB8
>based) microcontroller board. Nothing fancy: I just want to be able to
>send bytes to the board through USB.
>
>After reading Greg's article in Linux Journal and slightly modifying
>usb-skeleton (v.0.6), I have a few questions (since obviously my
>driver does not work).
>
>Here are the modifications I made on usb-skeleton to adapt it to my
>purpose:
>/* Define these values to match your device */
>#define USB_SKEL_VENDOR_ID     0x0c70
>#define USB_SKEL_PRODUCT_ID    0x0000
>
>#define USB_SKEL_MINOR_BASE    200
>
>and since I do not (yet) use devfs, I removed the two references to
>devfs (which I *thought* would be unnecessary).
>
>In order to call this driver, I use the following very simple code:
>int main()
>{char buf=0xFF;int f;
>f=open("/dev/usbskel0",O_RDWR);
>write(f,&buf,1); write(f,&buf,1); write(f,&buf,1); write(f,&buf,1);
>write(f,&buf,1); write(f,&buf,1); write(f,&buf,1); write(f,&buf,1);
>close(f);return(0);}
>
>Here are the relevant lines in the log (/var/log/messages or dmesg)
>
>This is all done under a newly downloaded (last week end) 2.4.17 kernel.
>usb.c: registered new driver usbdevfs
>usb.c: registered new driver hub
>usb-ohci.c: USB OHCI at membase 0xc4817000, IRQ 9
>usb-ohci.c: usb-00:13.0, Acer Laboratories Inc. [ALi] M5237 USB
>usb.c: new USB bus registered, assigned bus number 1
>usb.c: kmalloc IF c111ff20, numif 1
>usb.c: new device strings: Mfr=0, Product=2, SerialNumber=1
>usb.c: USB device number 1 default language ID 0x0
>Product: USB OHCI Root Hub
>SerialNumber: c4817000
>     [usb.c message ...]
>     [here I plug in my microcontrller]
>usb.c: registered new driver skeleton
>usb-skeleton.c: USB 68HC08JB8 Driver v0.1
>hub.c: port 1 connection change
>hub.c: port 1, portstatus 301, change 1, 1.5 Mb/s
>hub.c: port 1, portstatus 303, change 10, 1.5 Mb/s
>hub.c: USB new device connect on bus1/1, assigned device number 2
>usb.c: kmalloc IF c375b700, numif 1
>usb.c: new device strings: Mfr=1, Product=2, SerialNumber=0
>usb.c: USB device number 2 default language ID 0x409
>Manufacturer: MCT Elektronikladen
>Product: USB08 Evaluation Board
>usb-skeleton.c: USB Skeleton device now attached to USBSkel0
>usb.c: skeleton driver claimed interface c375b700
>usb.c: kusbd: /sbin/hotplug add 2
>usb.c: kusbd policy returned 0xfffffffe
>
>And when I run my user-program for calling the module (as described
>previously):
>lpmorh04:/home/jmfriedt# ./usb_test
>Unable to handle kernel NULL pointer dereference at virtual address
>0000011b
>printing eip:
>c48283d6
>*pde = 00000000
>Oops: 0000
>CPU:    0
>EIP:    0010:[<c48283d6>]    Not tainted
>EFLAGS: 00010202
>eax: c3107ca0   ebx: c3ab5920   ecx: c3ab5968   edx: 000000ff
>esi: 00000001   edi: 00000000   ebp: c30c3f98   esp: c30c3f70
>ds: 0018   es: 0018   ss: 0018
>Process usb_test (pid: 263, stackpage=c30c3000)
>Stack: c3107ca0 ffffffea 00000000 c311a4a0 c1106320 00000002 00000003
>c3ab5968
>        c1106320 00000000 00000001 c012beab c3107ca0 bffff8cb 00000001
>c3107cc0
>        c30c2000 40013650 400e0653 bffff8cc c0106b63 00000003 bffff8cb
>00000001
>Call Trace: [<c012beab>] [<c0106b63>]
>Code: 83 7a 1c 8d 75 24 83 3d 00 94 82 c4 00 0f 84 1a 01 00 00 83
>Segmentation fault
>lpmorh04:/home/jmfriedt#
>
>Now I cannot remember seeing such crashes when I was writing modules for
>the
>2.0.x or 2.2.x kernels (cannot remember which version it was for).
>My concern is mainly about the /dev/ entry. As I said, since I do not
>use
>devfs I removed the (2 ?) references to devfs in usb-skeleton. I my
>older
>code, I used to initialize the /dev entry in the module by using
>register_chrdev(MAJOR,"name",&fops); which is apparently no longer done.
>I did create mknod /dev/usbskel0 c 180 200 but I do not understand how
>to refer to it in usb-skeleton.
>
>Any help would be quite appreciated ?
>Thank you, Jean-Michel
>
>_______________________________________________
>[EMAIL PROTECTED]
>To unsubscribe, use the last form field at:
>https://lists.sourceforge.net/lists/listinfo/linux-usb-devel




_________________________________________________________________
Join the world’s largest e-mail service with MSN Hotmail. 
http://www.hotmail.com


_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to