2007-05-03 12:41 PM
USB random transmit failure in bulk transfer.
2011-05-17 12:42 AM
2011-05-17 12:42 AM
I try adapt virtual comm via USB to multiple comm implementation - four or five bidirectional virtual comm interfaces in one USB device. I am testing the implementatin on ARM9 - STR912FW44X6 (serie 619) on STR910-EVAL board. I detected rarely OUT packed losses, if I use the same endpoint number for reception and for transmission. If I use different endpoint for IN and OUT, I not detect any packed losses.
I assume, the OUT packet losses may be caused by lose of received OUT packed size stored in bites 25:16 of USB_COUNT register in case of writing new IN packed size to bites 9:0 of the register by macro _SetEPTxCount(). The USB_COUNT register modification can not be atomic and any new value in bites 25:16 of the register (item COUNTn_RN=X[9:0]) writen by USB interface may be lost due to colision with _SetEPTxCount(). I suspect, design of the USB interface causes imposibility of atomic change of COUNTn_TX without interference of COUNTn_RX bits of USB_COUNT register. I recomend using of different endpoint numbers for IN and for OUT direction (but number of usable endpoints is decreased, of course). Libor Seidl (seidl@feld.cvut.cz)