Sign in

username:

password:



Not a member?

Search AT91SAM



Search tips

Subscribe to AT91SAM



Ads

Discussion Groups

Discussion Groups | AT91SAM ARM | CDC problem - My bulk in endpoint freezes after 1 transmission.

For users of the Atmel AT91SAM7 and AT91SAM9 ARM CPU chips. Atmel has taken a new direction by combining on chip flash and ram with the ARM CPU on a single die. This provides low cost devices for small systems using the ARM CPU. This group is to exchange information to help users get started and learn how to use the devices.

CDC problem - My bulk in endpoint freezes after 1 transmission. - slouwilson78 - Sep 11 8:31:38 2008

Hi all,

I have the exact same problem as described here by Cliff.

http://www.embeddedrelated.com/groups/AT91SAM/show/2053.php

However, my bulk in endpoint is set up for bulk(b0010) not iso. Does
anyone else have any ideas or tips to give me in debugging this
problem?

I have usbsniffers and can view my bulk out endpoint working
correctly. When i transmit a character out of the hyperterm I can
view it using a breakpoint at my bulk out int handler. I then put
this character into UDPRegisters->UDP_FDR[AT91C_EP_IN] and set
AT91C_UDP_TXPKTRDY. It works once then stops transmitting. TXPKTRDY
never clears TXCOMP interrupt never fires.

Please can anyone help me before I pull my hair out?

Thanks

swilson

------------------------------------



(You need to be a member of AT91SAM -- send a blank email to AT91SAM-subscribe@yahoogroups.com )


Re: CDC problem - My bulk in endpoint freezes after 1 transmission. - techguy2000 - Sep 13 2:02:59 2008


The problem with the bulk-in endpoint was caused by a
misconfiguration of the 4th endpoint, which should have been an
interrupt endpoint, but instead it was configured as iso in the
example driver. The control, bulk-in, and bulk-out endpoints were
always configured correctly.

The misconfiguration of the interrupt endpoint killed the bulk-in
endpoint on _some_ versions of host controllers. In other words, it
worked fine with some computers but didn't work with others. Recheck
the configuration of all of the endpoints.

Cliff

--- In A...@yahoogroups.com, "slouwilson78" wrote:
>
> Hi all,
>
> I have the exact same problem as described here by Cliff.
>
> http://www.embeddedrelated.com/groups/AT91SAM/show/2053.php
>
> However, my bulk in endpoint is set up for bulk(b0010) not iso. Does
> anyone else have any ideas or tips to give me in debugging this
> problem?
>
> I have usbsniffers and can view my bulk out endpoint working
> correctly. When i transmit a character out of the hyperterm I can
> view it using a breakpoint at my bulk out int handler. I then put
> this character into UDPRegisters->UDP_FDR[AT91C_EP_IN] and set
> AT91C_UDP_TXPKTRDY. It works once then stops transmitting. TXPKTRDY
> never clears TXCOMP interrupt never fires.
>
> Please can anyone help me before I pull my hair out?
>
> Thanks
>
> swilson
>

------------------------------------



(You need to be a member of AT91SAM -- send a blank email to AT91SAM-subscribe@yahoogroups.com )

Re: CDC problem - My bulk in endpoint freezes after 1 transmission. - slouwilson78 - Sep 13 5:43:14 2008

Hi Cliff,

Thanks for the reply.

I don't have a 4th endpoint.

I have checked and rechecked my descriptors. Can you check them for
me please?

I am also using 6119.inf with usbser.sys. Is this what you were
using? I have tried using 6124.sys but I cannot get it to work with
6119.inf.

const unsigned char ucaDeviceDescriptor[18] =
{
/* Device descriptor */
0x12, // bLength
0x01, // bDescriptorType
0x10, // bcdUSBL
0x01, //
0x02, // bDeviceClass: CDC class code
0x00, // bDeviceSubclass: CDC class sub code
0x00, // bDeviceProtocol: CDC Device protocol
0x08, // bMaxPacketSize0 ******0x40
0xEB, // idVendorL
0x03, //
0x24, // idProductL
0x61, //
0x10, // bcdDeviceL
0x01, //
0x00, // iManufacturer // 0x01
0x00, // iProduct
0x00, // SerialNumber
0x01 // bNumConfigs
};

const unsigned char ucaConfigurationDescriptor[67] =
{
0x09, // CbLength
0x02, // CbDescriptorType
0x43, // CwTotalLength 2 EP + Control
0x00,
0x02, // CbNumInterfaces
0x01, // CbConfigurationValue
0x00, // CiConfiguration
0xC0, // CbmAttributes 0xA0
0x00, // CMaxPower

// Communication Class Interface Descriptor Requirement
0x09, // bLength
0x04, // bDescriptorType
0x00, // bInterfaceNumber
0x00, // bAlternateSetting
0x01, // bNumEndpoints
0x02, // bInterfaceClass
0x02, // bInterfaceSubclass
0x00, // bInterfaceProtocol
0x00, // iInterface

// Header Functional Descriptor
0x05, // bFunction Length
0x24, // bDescriptor type: CS_INTERFACE
0x00, // bDescriptor subtype: Header Func Desc
0x01, // bcdCDC:1.1 1001
0x10,

// ACM Functional Descriptor
0x04, // bFunctionLength
0x24, // bDescriptor Type: CS_INTERFACE
0x02, // bDescriptor Subtype: ACM Func Desc
0x02, // bmCapabilities was 0x00

// 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
0x02, // bmCapabilities: D1 + D0
0x01, // bDataInterface: Data Class Interface 1

// Endpoint 1 descriptor
0x07, // bLength
0x05, // bDescriptorType
0x83, // bEndpointAddress, Endpoint 01 - IN 333333
0x03, // bmAttributes INT
0x0a, // wMaxPacketSize
0x00,
0x00, // bInterval

// Data Class Interface Descriptor Requirement
0x09, // bLength
0x04, // bDescriptorType
0x01, // bInterfaceNumber
0x00, // bAlternateSetting
0x02, // bNumEndpoints
0x0A, // bInterfaceClass
0x00, // bInterfaceSubclass
0x00, // bInterfaceProtocol
0x00, // iInterface

// First alternate setting
// Endpoint 1 descriptor
0x07, // bLength
0x05, // bDescriptorType
0x01, // bEndpointAddress, Endpoint 01 - OUT
0x02, // bmAttributes BULK
AT91C_EP_OUT_SIZE, // wMaxPacketSize
0x00,
0x00, // bInterval

// Endpoint 2 descriptor
0x07, // bLength
0x05, // bDescriptorType
0x82, // bEndpointAddress, Endpoint 02 - IN
0x02, // bmAttributes BULK
AT91C_EP_IN_SIZE, // wMaxPacketSize
0x00,
0x00 // bInterval
};

Any help is really appreciated....

Thanks

swilson

--- In A...@yahoogroups.com, "techguy2000" wrote:
> The problem with the bulk-in endpoint was caused by a
> misconfiguration of the 4th endpoint, which should have been an
> interrupt endpoint, but instead it was configured as iso in the
> example driver. The control, bulk-in, and bulk-out endpoints were
> always configured correctly.
>
> The misconfiguration of the interrupt endpoint killed the bulk-in
> endpoint on _some_ versions of host controllers. In other words,
it
> worked fine with some computers but didn't work with others.
Recheck
> the configuration of all of the endpoints.
>
> Cliff
>
> --- In A...@yahoogroups.com, "slouwilson78"
wrote:
> >
> > Hi all,
> >
> > I have the exact same problem as described here by Cliff.
> >
> > http://www.embeddedrelated.com/groups/AT91SAM/show/2053.php
> >
> > However, my bulk in endpoint is set up for bulk(b0010) not iso.
Does
> > anyone else have any ideas or tips to give me in debugging this
> > problem?
> >
> > I have usbsniffers and can view my bulk out endpoint working
> > correctly. When i transmit a character out of the hyperterm I
can
> > view it using a breakpoint at my bulk out int handler. I then
put
> > this character into UDPRegisters->UDP_FDR[AT91C_EP_IN] and set
> > AT91C_UDP_TXPKTRDY. It works once then stops transmitting.
TXPKTRDY
> > never clears TXCOMP interrupt never fires.
> >
> > Please can anyone help me before I pull my hair out?
> >
> > Thanks
> >
> > swilson
>
------------------------------------



(You need to be a member of AT91SAM -- send a blank email to AT91SAM-subscribe@yahoogroups.com )

Re: CDC problem - My bulk in endpoint freezes after 1 transmission. - techguy2000 - Sep 15 15:07:39 2008

--- In A...@yahoogroups.com, "slouwilson78" wrote:
>
> Hi Cliff,
>
> Thanks for the reply.
>
> I don't have a 4th endpoint.

Yes, you do. :)
> // Endpoint 1 descriptor
> 0x07, // bLength
> 0x05, // bDescriptorType
> 0x83, // bEndpointAddress, Endpoint 01 - IN 333333
> 0x03, // bmAttributes INT
> 0x0a, // wMaxPacketSize
> 0x00,
> 0x00, // bInterval

The comment is wrong, this is an Endpoint 3 (the 4th endpoint)
descriptor, and it's being configured as an interrupt in. I believe
the interrupt in is required for the serial class driver whether you
use it or not (I'm not 100% sure about that).

Now make sure you have something like this in the init code:

pUDP->UDP_CSR[3] = AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_INT_IN;

That was the line that got me. I believe it was originally
indicating that endpoint 3 was an ISO endpoint.

Cliff
------------------------------------



(You need to be a member of AT91SAM -- send a blank email to AT91SAM-subscribe@yahoogroups.com )

Re: CDC problem - My bulk in endpoint freezes after 1 transmission. - slouwilson78 - Sep 16 12:14:30 2008

Thanks so much for your reply.

I didn't understand this properly at all. I thought that was my
control endpoint. So I

I still have some other issues (my config set up) but its working a
lot more reliably now.

I am so relieved!

Thanks.....
--- In A...@yahoogroups.com, "techguy2000" wrote:
>
> --- In A...@yahoogroups.com, "slouwilson78"
wrote:
> >
> > Hi Cliff,
> >
> > Thanks for the reply.
> >
> > I don't have a 4th endpoint.
>
> Yes, you do. :)
> > // Endpoint 1 descriptor
> > 0x07, // bLength
> > 0x05, // bDescriptorType
> > 0x83, // bEndpointAddress, Endpoint 01 - IN 333333
> > 0x03, // bmAttributes INT
> > 0x0a, // wMaxPacketSize
> > 0x00,
> > 0x00, // bInterval
>
> The comment is wrong, this is an Endpoint 3 (the 4th endpoint)
> descriptor, and it's being configured as an interrupt in. I
believe
> the interrupt in is required for the serial class driver whether
you
> use it or not (I'm not 100% sure about that).
>
> Now make sure you have something like this in the init code:
>
> pUDP->UDP_CSR[3] = AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_INT_IN;
>
> That was the line that got me. I believe it was originally
> indicating that endpoint 3 was an ISO endpoint.
>
> Cliff
>

------------------------------------



(You need to be a member of AT91SAM -- send a blank email to AT91SAM-subscribe@yahoogroups.com )