2025-04-25 1:03 PM - edited 2025-04-25 1:05 PM
I am looking for help solving a CDC-ACM problem with Azure Rtos ThreadX, and the USBX Middleware for STM32F4.
My device is an STM32F427VGTx.
I currently have a project that uses the USBX host library. I am connecting up to 4x CDC-ACM devices through an off-the-shelf USB Hub.
I had problems connecting multiple devices through the hub, but I have solved that after following the solution to update the USBX core bsp from the stm32-mw-usbx repo. (STM32H7 and USB2514 Continued Problems)
I can connect to all 4x CDC-ACM devices (data class instance and control class instance enumerate successfully on all devices).
I can send commands to all devices using the control interface by sending a transfer request to the control endpoint.
I can read from up to two CDC-ACM devices, but the third and fourth device will timeout after calling ux_host_class_cdc_acm_read. The function returns a transfer-request-timeout after failing to retrieve the ux_host_semaphore. The status of ux_host_semaphore_get is always TX_NO_INSTANCE and is set by tx_semaphore_cleanup() after semaphore timeout in a thread.
I am calling ux_host_class_cdc_acm_read inside a thread. It works for up to two devices. The first two still work while the third and fourth don't.