I’m using AzureRTOS USBX to write a Mass Storage application for a custom ARM SoC that isn’t yet on the market. The behavior I observe when I flash and run my program is that it gets through initialization without returning errors, and the device ACKs the request for a Device Descriptor, but it never responds to that request.
I have a working USBX CDC ACM application, so I do know the USB peripheral hardware on the SoC is functional. I’m using the same hardware initialization steps for the Mass Storage application as the CDC ACM application.
main calls tx_kernel_enter(). tx_application_define does the following:
- Create a byte pool
- Allocate device stack memory from that byte pool
- Initialize USBX (ux_system_initialize)
- Initialize device stack with descriptors (ux_device_stack_initialize)
- Register a Mass Storage device (ux_device_stack_class_register with MSC information)
- USB peripheral hardware initialization
- Allocate the app thread memory from the byte pool
- Create a thread with an empty infinite loop
I tried mimicking a Mass Storage application for STM hardware and replaced their hardware initialization with our own. Hopefully someone can point out a step that I’m forgetting or something that would lead to the device ACK but not responding to the request for the Device Descriptor.
I can post some of my code if this is not enough information, but the hardware initialization itself I’ll have to keep hidden.
Eddie is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.