We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello,
Using a LPC2478, I'm trying to maintain a CDC connection with a host. But at a certain point, the RTX USB tasks are no longer signaled because both the EP_SLOW and EP_FAST bits of USBDevIntSt register remain 0 (the register having the value 0xF1). Do you know how this register is set? Can this failure be attributed to the device driver on the host?
OK, I found 2 diagrams in the user manual that indicate that I can prevent the whole issue if I use DMA transfers. The implicated bits are set, of course, but the hardware, and it seems that the host has a hand in setting them. I would appreciate any additional feedback!
> But at a certain point, the RTX USB tasks are no longer signaled
Err, what is your REAL problem? For example, transfer over bulk IN or OUT hangs, etc.
Above finding doesn't give us so much clue to specify the cause. After enumeration finishes, USB interrupt stops while no communication occurs over USB, unless SOF interrupt is enabled.
Tsuneo
Tsuneo,
I can much more specific now: the Keil USB stack seems to reply "not supported" after the host issues a "query device relations (removal relations)" request over the CDC connection. Do you know where in the stack it is handled? Thanks.
"query device relations (removal relations)" on Windows is issued to the device driver, - when device is plugged off from USB port - surprised removal - when unrecoverable error occurs on the device or on the PC device driver.
In both cases, it is detected by PC application as device disconnection. As of detection of connection/ disconnection over usbser.sys, see this post.
tech.groups.yahoo.com/.../43461
When the PC app detects disconnection of CDC device, it closes COM port handle immediately, so that Windows dispose the device driver object.
If the disconnection is caused by plug-off, plug-in by user recovers the connection. - Device gets enumeration again on plug-in. You may need to initialize the USB communication context (variables and flags, etc) in Set_Configuration handler. - PC app has to detect connection, as described in above post, and it opens COM port again.
If the disconnection is caused by error such as noise, soft-detach / attach on the device recovers the connection.
If you often see connection error, noise source may lie on the board.
Thanks. I will try to get it working tomorrow.
Thanks for your help so far. I am having serious problems with the reproduction of this issue - maybe you can advise me what to do next: Is it true that the above message arrives on endpoint 0? Assuming I want to solve this with a USB software re-connect, can you point out the location in the Keil USB stack where I need to do that? I just had a communication failure after 2 hours of running and my code clearly did not get executed - very frustrating...!
Thanks in advance