The problem is HERE , but why ???
int rt_usb_hcd_pipe_xfer(uhcd_t hcd, upipe_t pipe, void* buffer, int nbytes, int timeout);
rt_inline int rt_usb_hcd_setup_xfer(uhcd_t hcd, upipe_t pipe, ureq_t setup, int timeout)
{
return hcd->ops->pipe_xfer(pipe, USBH_PID_SETUP, (void *)setup, 8, timeout);
}
While
a) in RT-4.1.1 after the call , you find in hcd the results of the GET Descriptor. The EP_IN interrupt is received.
b) In RT5.0.2 the rt_inline function fails and no results is get back, The status is not zero, so an error happened.
The EP IN interrupt has never been triggered.
What the hell is the difference between the two versions of the O.S. if nothing has changed in the devce driver nor in the STM32 HAL and LL functions ?
Can the interrupt have been unitentionally masked ?
It is difficult to follow what happens in OTG registers.
The different behaviour can be due only to something chnage din the O.S.
A difference between the two environmnet is also in thhe fact thet in 5.0.2 the rRT_USING_POSIX and RT_USING_TERMIOS have been set in order to implement a termbox menu.
BUt this fact should have no impact on the managmnet of the OTG driver.
Any suggestion regrading hoe to debug the dircet call w/o having to check all the STM32 registers.