Re: newbie doubt on USB device/peripheral

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Jan 10, 2009 at 05:54:43PM +0530, Mandeep Sandhu wrote:
> Hi All,
> 
> I'm new to USB device driver development. I've mostly done a few LKMs
> (and an ethernet driver) on 2.6 kernels. And this too was sometime back
> (around 1.5 yrs!)...so my knowledge on a few things might be rusty! :)
> 
> I'm working on an embedded board and would like to validate a few
> assumptions here before proceeding to start work on them.
> 
> The board is a Compulab CM-X270L (PXA270). This board has USB master as
> well as a slave port. It's currently running a patched 2.6.16 kernel
> (the patch is from Compulab). It runs Compulab's Debian distribution
>  - "Debian GNU/Linux 3.1".

Wow, that's old and out of date, and very obsolete.

> We need to use the board as a USB slave to a machine which has a USB
> master (root hub). This machine runs a proprietary OS and we do not
> have access to it's source code and/or any other means to access it's
> internals.

What OS is it?

> This proprietary OS supports the following USB classes:
> 
> * CDC-ACM: Full ACM specs
> 
> * CDC-ECM: The USB host side diver on the OS, only works with one
>   particular USB-ethernet dongle (say chip-X). So I'm guessing the OS
>   does not support the full ECM specs.
> 
> We need to use the board as a slave and test it's interoperability with
> the host for the above mentioned USB classes.
> 
> I plan to do the following:
> 
> 1) CDC-ACM: Compile the USB gadget serial driver as a LKM for the board.
>    If the module loads successfully, connecting the slave port to the
>    host should make it (the slave), enumerate successfully as an ACM
>    device.

Did that work?

> 2) CDC-ECM: This one's a bit tricky! I understand that the ethernet is
>    implemented in drivers/usb/gadget/ether.c. But, since the host side
>    driver is written to work with a particular chipset, will it work
>    "AS IS" with the ethernet gadget driver?

It should.

>    Also, in case it doesn't work, can I tweak the gadget driver to make
>    it work/enumerate correctly with the host? Basically I'll be "faking"
>    the chip in s/w.

Sure, you could.

> Also, how can I verify that the kernel has recognized the USB slave device?

Look at the log messages?

> During kernel configuration, we can choose gadget support as a module.
> Is there a separate module that needs to be present for gadget support or
> will individual gadget drivers themselves provide this functionality?

Your gadget controller needs to be loaded as well.

> The following link states that the USB device functionality is not supported
> in 2.6.16 kernels:
> 
> http://www.compulab.co.il/mediawiki/index.php5?title=Linux_Kernel_for_CM-X270#USB_device
> 
> But if I get the patches mentioned in the link and compile them as modules,
> then can I enable the USB device functionality?

Probably upgrade to a newer kernel version.  YOu do realize how old
2.6.16 is, right?

> Another pain-point is the fact that I can't re-flash the kernel on the
> Compulab board with a newer version (I think 2.6.24 has support for USB
> device). This is because the board directly boots up the kernel and does
> not stop at the prompt. I've followed the procedure mentioned here:
> 
> http://www.compulab.co.il/mediawiki/index.php5?title=Getting_started_with_Linux_on_CM-X270#Image_installation
> 
> but this doesn't seem to work, the bootloader (ARMMon) still boots the kernel
> directly! :( Any clues as to how to circumvent this problem?

Contact your manufacturer?

good luck,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux