0

I have a system running WinCE7 on an board with IMX6 processor. Occasionally when the system is heavily loaded, I have seen on the USB tracer, that for about 2 seconds , the IN tokens are not seen (only SOF is seen indicating the bus is alive). Somewhere in the driver the call to the function "IssueBulkTransfer" is made which I believe goes through the Microsoft library and reaches the BSP. My question is that if I tell the Host controller to send an IN token, will the controller's microcode keep on sending the IN tokens if it receives NAK , without my driver having to resend the IN tokens every time (thus using CPU time)?

Thanks

AKN
  • 1
  • 2

1 Answers1

0

From the description I am assuming that you are talking about EHCI controller. Answer in two points -

1 - Yes the controller will continuously send the IN Token for NAKs till NAC counter reaches 0 for that endpoint.

2 - The idle period you are seeing is also expected I suppose. Please see the quote from EHCI specification Section 4.9.

Note that when all queue heads in the Asynchronous Schedule either exhausts all transfers or all NakCnt's go to zero, then the host controller will detect an empty Asynchronous Schedule and idle schedule traversal (see Section 4.8.3).

So the controller will stop traversing the schedule list which might be the 2 secs idle you are seeing. The moment the controller starts traversal again, it reloads the NAK counter and starts in IN token again.

Shaibal
  • 907
  • 8
  • 18
  • @AKN - One point I forgot to mention that software can choose not to use the NAK counter. In that case, the host controller will continuously send IN tokens. – Shaibal Mar 20 '17 at 18:17