Handling when buffer underrun error occurs on USB Host side

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Handling when buffer underrun error occurs on USB Host side

1,501 Views
shutatanaka
Contributor I

Hello,

I am targeting the i.MX25. I am trying High-speed USB communication using the OTG port.

Sometimes underrun error occurs during Bulk-OUT transfer. Looking at the USB bus log, retransfer occurs every time after this error occurs.

· Is this retransfer one of the specifications specified in the EHCI standards or the original specification of this chip?
· What should be done on the software side if an underrun error occurs?

Labels (1)
0 Kudos
3 Replies

1,087 Views
igorpadykov
NXP Employee
NXP Employee

Hi shuta

please look on sect.47.5.4.15.1 Transfer/Transaction Based Interrupts, "Data Buffer Error"
i.MX25 Reference Manual
https://www.nxp.com/docs/en/reference-manual/IMX25RM.pdf

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

1,087 Views
shutatanaka
Contributor I

Hi igor

Thank you for your reply.

The chapter describes about CRC errors, but it is not written about subsequent retransmissions. I would like to know whether the USB controller guarantees this retransmission or not.

Best regards.

shuta tanaka

0 Kudos

1,087 Views
igorpadykov
NXP Employee
NXP Employee

Hi shuta

in description below from sect.47.5.4.15.1 nothing "about CRC errors":

Data Buffer Error


This event indicates that an overrun of incoming data or a underrun of outgoing data has occurred for this
transaction. This would generally be caused by the host controller not being able to access required data
buffers in memory within necessary latency requirements. These conditions are not considered transaction
errors, and do not effect the error count in the queue head. When these errors do occur, the host controller
records the fact the error occurred by setting the Data Buffer Error bit in the queue head, iTD or siTD.
If the data buffer error occurs on a non-isochronous IN, the host controller will not issue a handshake to
the endpoint. This will force the endpoint to resend the same data (and data toggle) in response to the next
IN to the endpoint.

If the data buffer error occurs on a non-isochronous IN, the host controller will not issue a handshake to
the endpoint. This will force the endpoint to resend the same data (and data toggle) in response to the next
IN to the endpoint.

..

There are other options suggested in the Transaction Translator section of the USB Specification Revision
2.0.

Best regards
igor

0 Kudos