From: Venkatesh A. TLS-C. <ave...@hc...> - 2007-09-26 12:36:04
|
=20 Hi=20 I am new to USB host driver development=2E I have a custom board based on FX2=2E I need to develop driver using libusb=2E =20 Where shall I get useful information? How to start writing driver? I read libusb project website=2E I didn't get much info=2E=2E =20 Libusb is for developing driver from user space=2E=2E=2E this is my understanding Do we need separate kernel level to invoke the usb devices? How the libusb communicates with usb devices? =20 Please clarify me=2E=2E =20 Regards Venkatesh A DISCLAIMER: ---------------------------------------------------------------------------= -------------------------------------------- The contents of this e-mail and any attachment(s) are confidential and= intended for the named recipient(s) only=2E It shall not attach any liability on the originator or HCL or its= affiliates=2E Any views or opinions presented in=20 this email are solely those of the author and may not necessarily reflect= the opinions of HCL or its affiliates=2E Any form of reproduction, dissemination, copying, disclosure, modification,= distribution and / or publication of=20 this message without the prior written consent of the author of this e-mail= is strictly prohibited=2E If you have received this email in error please delete it and notify the sender= immediately=2E Before opening any mail and=20 attachments please check them for viruses and defect=2E ---------------------------------------------------------------------------= -------------------------------------------- |
From: Tim R. <ti...@pr...> - 2007-09-26 16:29:24
|
Venkatesh Ananthakrishnan, TLS-Chennai wrote: > > > > I am new to USB host driver development. > > I have a custom board based on FX2. I need to develop driver using libusb. > > > > Where shall I get useful information? How to start writing driver? > > I read libusb project website. I didn’t get much info.. > Libusb (at least the 0.x version) is a relatively thin layer over the basic USB requests. If you understand the USB architecture (and you really should understand it before trying to drive a USB device), then the usage of libusb should be pretty clear. What kind of a device is it? What kind of pipes does it use? Do you need a continuous stream of data, or just short bursts now and then? Once you can answer these questions, the architecture of your application should become clear. The typical libusb application (if there is such a thing) enumerates through the list of devices to find the device of interest, opens it, selects a configuration and interface (if needed), sends a couple of control requests for set up, and then starts transferring data. > Libusb is for developing driver from user space… this is my understanding > That's not exactly true. Libusb allows you to access USB devices from user space without a custom kernel driver. It is possible to write a standalone "user space driver" using libusb, and Timo suggested several ways to do that, but in my experience, that is not common. Instead, your application just makes calls into libusb instead of using read/write/ioctl requests into a custom kernel driver. It often makes sense to create a friendly wrapper for the libusb routines, so that the rest of your application can use an abstraction that makes sense for your device > Do we need separate kernel level to invoke the usb devices? > > How the libusb communicates with usb devices? > A kernel driver is needed to use USB. In Linux, the standard USB support in the kernel includes a basic driver for USB devices that supports a set of ioctls (see the include file usbdevice_fs.h). Libusb uses those. In Windows, libusb-win32 installs a basic kernel driver that performs the same functions. -- Tim Roberts, ti...@pr... Providenza & Boekelheide, Inc. |
From: Michael B. <Michael.Bender@Sun.COM> - 2007-09-26 20:58:37
|
Tim Roberts wrote: > A kernel driver is needed to use USB. Not technically true. On the Sun Ray platform, for example, the USB ports on the Sun Ray thin client are presented to the server via a network connection, so all USB transactions (other than the underlying network protocols) occur in userspace. mike |
From: Tim R. <ti...@pr...> - 2007-09-26 22:04:50
|
Michael Bender wrote: > Tim Roberts wrote: > > >> A kernel driver is needed to use USB. >> > > Not technically true. On the Sun Ray platform, for example, the USB > ports on the Sun Ray thin client are presented to the server via a > network connection, so all USB transactions (other than the underlying > network protocols) occur in userspace. Yes, I should have said "currently, on Windows and Linux," because those are the only platforms where I have any USB knowledge at all... -- Tim Roberts, ti...@pr... Providenza & Boekelheide, Inc. |