This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: USB-CDC eCos configuration
- From: wavecom wavecom <wavecomw at yahoo dot com>
- To: Andrew Lunn <andrew at lunn dot ch>
- Cc: ecos-discuss at ecos dot sourceware dot org
- Date: Mon, 27 Aug 2007 05:16:10 -0700 (PDT)
- Subject: Re: [ECOS] USB-CDC eCos configuration
Thanks for answer,
--- Andrew Lunn <andrew@lunn.ch> wrote:
> On Mon, Aug 27, 2007 at 12:20:20AM -0700, wavecom
> wavecom wrote:
> > Hi All,
> >
> > I'm working on USB-CDC eCos based device.
>
> I presume you are writing your own USB-CDC driver? I
> don't think one
> exists for eCos yet.
Yes, it is USB-CDC driver, I was trying to find
already developed, but I couldn?t find any.
>
> > I've met some problems with initializing the
> device: Windows
> > recognizes the device as another COM port, but
> when I'm trying to
> > open the port by the hyperterminal, I have message
> "Could not open
> > COM port". What would be the cause of such
> behavior, below result of
> > lsusb -vvv command on Linux (I can also send my
> c-code of USB
> > initialization if necessary).
>
> Do you have a trace of the USB messages sent
> backwards and forwards
> when the device is opened? Does your driver handle
> all these messages?
I didn?t try to sniff connection, today I?m going to
install SnoopyPro and log trace of the connection. Can
you recommend me similar software for Linux?
>
>
> > Second question is, how to set
> > Functional Descriptors like CDC Header, CDC ACM,
> CDC Union, CDC Call
> > Management? Are these parameters necessary for
> proper operating the
> > USB-CDC device?
>
> What does the standard say? Is there a standard? Is
> this part of HID?
>
> What does Linux make of this device? Maybe you can
> get better
> diagnostics from Linux than from M$. At least with
> Linux you have the
> source code so you can find out why Linux does not
> like your
> driver....
I don?t know if the standard of USB-CDC already
exists. I suppose that parameters are important for
driver because only difference between fully
functional driver and my driver are extra Functional
Descriptors:
" CDC Header:
bcdCDC 1.10
CDC ACM:
bmCapabilities 0x00
CDC Union:
bMasterInterface 0
bSlaveInterface 1
CDC Call Management:
bmCapabilities 0x00
bDataInterface 1"
That is simple USB implementation on AT91 (without
OS). Parameters are specified in structure like below
(that?s a part of example given by Atmel):
/* ACM Functional Descriptor */
0x04, // bFunctionLength
0x24, // bDescriptor Type: CS_INTERFACE
0x02, // bDescriptor Subtype: ACM Func Desc
0x00, // bmCapabilities
/* Union Functional Descriptor */
0x05, // bFunctionLength
0x24, // bDescriptorType: CS_INTERFACE
0x06, // bDescriptor Subtype: Union Func Desc
0x00, // bMasterInterface: Communication Class
Interface
0x01, // bSlaveInterface0: Data Class Interface
/* Call Management Functional Descriptor */
0x05, // bFunctionLength
0x24, // bDescriptor Type: CS_INTERFACE
0x01, // bDescriptor Subtype: Call Management Func
Desc
0x00, // bmCapabilities: D1 + D0
0x01, // bDataInterface: Data Class Interface 1
That may notify driver about communication interface
and so on.
I?d better move my driver debugging to Linux, MS
doesn?t support any method of port debug.
>
> Andrew
>
Pete
____________________________________________________________________________________
Looking for a deal? Find great prices on flights and hotels with Yahoo! FareChase.
http://farechase.yahoo.com/
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss