2022-05-02 05:37 AM
Bug report in HAL.
Under heavy load, the USB Host stack can hang due to the EPDIR flag on an IN Channel being incorrectly cleared by the HAL.
stm32f4xx_ll_usb.c, function USB_HC_Halt, clears EPDIR in the case that the request queue is full. This routine is called by IN & OUT interrupt handlers and can there leave EPDIR wrongly reset for an IN channel.
In the case of using DMA, tech ref says (in section 'Halting a Channel') that code does not need to check for request queue full - so I think the code should probably take DMA into account as well.
I am using DMA, I have commented out the process queue check.
Solved! Go to Solution.
2022-05-10 02:21 AM
Hello @RTerr.1 ,
Could you please indicate which HAL version is used? Because EP dir clear has already been fixed in HAL during HAlt.
It looks like you are using a quite old FW.
Thanks in advance.
BeST Regards,
Walid
2022-05-04 08:17 AM
Hello @RTerr.1 ,
Thank you for your contribution.
This issue has been reported internally. I will keep you updated as soon as possible.
BeST Regards,
Walid
2022-05-04 08:19 AM
Internal ticket number: 127522(PS: This is an internal tracking number and is not accessible or usable by customers)
2022-05-10 02:21 AM
Hello @RTerr.1 ,
Could you please indicate which HAL version is used? Because EP dir clear has already been fixed in HAL during HAlt.
It looks like you are using a quite old FW.
Thanks in advance.
BeST Regards,
Walid