STM32U575 USBX / ThreadX
USB controller, CDC transfers, ThreadX waits, error reports, control queue and allocator pressure.
Download domain JSON · GitHub source · Domain catalog
Probe sampled · Descriptor com.bkpt.stm32u575.usbx-cdc-threadx · version 0.3.0 · domain API 1.
Purpose and prerequisites
For the NUCLEO-U575ZI-Q USBX CDC ACM to USART1 bridge on ThreadX, based on STM32CubeU5 v1.9.0. Requires its matching Debug ELF with DWARF, STM32U575 SVD and a Trace Domains v1 build supporting structured fields and capacity cards. The descriptor includes no firmware. The existing U575 walkthrough explains connections and application controls; this page is the field reference.
Engineering interpretation
Follow the path from controller interrupts/connection to USBX configuration, endpoint requests and the UART/USB ring. Configured with idle endpoints and waiting threads is healthy idle behavior. Under expected traffic, stopped indices plus masked interrupts are stronger evidence than a thread wait alone. The error counter and retained codes show reports, not every failed API call. Queue pressure concerns USB start/stop control messages. Allocator pressure is sampled capacity, not proof of failed allocation or a measured minimum-free watermark. The two pools can share storage.
Acquisition and validity
The descriptor declares 37 inputs and 5 derived channels, with a requested default of 20 Hz per input. Unsupported/unsafe rows remain unavailable. The achieved poll rate depends on the probe and selected inputs.
SVD device: STM32U575. Target prefix: STM32U575.
Inputs are sampled separately while firmware runs. DWARF paths require the exact Debug ELF; unresolved or null pointers produce unavailable values. A readable object is not proof that it has finished initialization. Firmware can update or reuse it between reads. Missing observations propagate to dependent fields and checks.
Cards with a capacity reference show value / capacity, not a percentage. Both readings must be available, capacity must be positive, and the value must lie between zero and capacity. Otherwise the card is unavailable. Individual fields retain their raw values in traces. Saved observations describe their acquisition time, not fresh target state.
Cards and tables
Errors and buffer health
Reported errors may predate this session and persist after recovery. Zero reports is not proof that all API calls succeeded. Observed incidents below remain visible after recovery.
| CARD OR ROW | READING AND SIGNIFICANCE | UNIT |
|---|---|---|
Last reported stack error · usbx.last_error | Last code supplied to the USBX error handler, retained after recovery. Zero or an old code is not an active-health verdict. Values. | Raw value / decoded state |
Reported errors since stack init · usbx.error_count | 32-bit count of calls to the USBX error handler since stack initialization. API errors that bypass the handler are not counted; a decrease is not converted to a wrap delta. | reports |
USB start/stop control queue · app.control_queue.enqueued | Current queued USB start/stop control messages. The card pairs this with capacity; CDC payload bytes use a different ring. Reference: app.control_queue.capacity. Capacity in control messages, five for this example. This is the denominator for queue occupancy/free-space checks. | messages |
USBX regular memory free · usbx.memory.regular.free | Available allocator bytes at this sample. Free space does not establish the largest contiguous allocatable block. Compare with total, and do not add potentially aliased pools. Reference: usbx.memory.regular.total. Configured byte-pool size. This is the card/check denominator, not cumulative allocated bytes. Cache-safe storage may alias the regular pool. | bytes |
USBX cache-safe memory free · usbx.memory.cache_safe.free | Available allocator bytes at this sample. Free space does not establish the largest contiguous allocatable block. Compare with total, and do not add potentially aliased pools. Reference: usbx.memory.cache_safe.total. Configured byte-pool size. This is the card/check denominator, not cumulative allocated bytes. Cache-safe storage may alias the regular pool. | bytes |
USB controller
Sampled controller state; brief changes between reads can be missed.
| CARD OR ROW | READING AND SIGNIFICANCE | UNIT |
|---|---|---|
Interrupt delivery · usb.interrupts_enabled | Global interrupt delivery: 0 disabled, 1 enabled. Enabled does not prove NVIC delivery or ISR servicing. Values. | Raw value / decoded state |
Software connection · usb.soft_disconnect | 0 means connected by software; 1 means held disconnected. It does not detect the cable. Values. | Raw value / decoded state |
USB address · usb.address | USB device address, 0–127. Zero is the default address during enumeration; compare with stack configuration. | Raw value / decoded state |
Bus state · usb.suspended | 0 active bus, 1 suspended. Host power management can make suspension normal. Values. | Raw value / decoded state |
USBX device and CDC class
Current device and host settings. Uninitialized or changing objects are shown as unavailable.
| CARD OR ROW | READING AND SIGNIFICANCE | UNIT |
|---|---|---|
USBX state · usbx.device_state | USBX software device state. Configured (3) can persist even when controller interrupts stop; compare controller and endpoint evidence. Values. | Raw value / decoded state |
Selected configuration · usbx.configuration | Host-selected configuration value. This bridge normally selects 1; it is not a transfer counter. | Raw value / decoded state |
CDC baud rate · usbx.baud | CDC line-coding baud rate in bits/s, used for the UART bridge. It is not USB bus speed. | Raw value / decoded state |
Host DTR · usbx.dtr | Host CDC data-terminal-ready flag. It may remain 0 until a serial client opens the CDC port. Values. | Raw value / decoded state |
Host RTS · usbx.rts | Host CDC request-to-send flag. Its absence alone does not identify a fault. Values. | Raw value / decoded state |
CDC endpoint 1
Current or most recent request. Fields are sampled separately; these lengths do not measure throughput.
| CARD OR ROW | READING AND SIGNIFICANCE | UNIT |
|---|---|---|
Endpoint / direction · usbx.ep1.address | Endpoint descriptor address. Bit 7 set means IN (device to host), clear means OUT (host to device). The endpoint number here is linked-list traversal order; read this address to determine direction. Values. | Raw value / decoded state |
Transfer state · usbx.ep1.status | Current or most recent USBX request state: 0 not pending, 1 pending, 2 completed, 4 aborted. A pending OUT request is normal when the host is idle. Values. | Raw value / decoded state |
Requested bytes · usbx.ep1.requested_length | Bytes requested for the current/most recent transfer, not a cumulative count or throughput. | Raw value / decoded state |
Actual bytes · usbx.ep1.actual_length | Bytes recorded as actually transferred for that request. A pending request can show zero. Compare with status before interpreting completion. | Raw value / decoded state |
Completion code · usbx.ep1.completion_code | USBX result code of the current/most recent request. Zero is the success code but does not prove a pending request has completed. A retained error is not a count of repeated failures. Values. | Raw value / decoded state |
CDC endpoint 2
Current or most recent request. Fields are sampled separately; these lengths do not measure throughput.
| CARD OR ROW | READING AND SIGNIFICANCE | UNIT |
|---|---|---|
Endpoint / direction · usbx.ep2.address | Endpoint descriptor address. Bit 7 set means IN (device to host), clear means OUT (host to device). The endpoint number here is linked-list traversal order; read this address to determine direction. Values. | Raw value / decoded state |
Transfer state · usbx.ep2.status | Current or most recent USBX request state: 0 not pending, 1 pending, 2 completed, 4 aborted. A pending OUT request is normal when the host is idle. Values. | Raw value / decoded state |
Requested bytes · usbx.ep2.requested_length | Bytes requested for the current/most recent transfer, not a cumulative count or throughput. | Raw value / decoded state |
Actual bytes · usbx.ep2.actual_length | Bytes recorded as actually transferred for that request. A pending request can show zero. Compare with status before interpreting completion. | Raw value / decoded state |
Completion code · usbx.ep2.completion_code | USBX result code of the current/most recent request. Zero is the success code but does not prove a pending request has completed. A retained error is not a count of repeated failures. Values. | Raw value / decoded state |
Application and ThreadX
Waiting is normal at idle. Compare the producer and consumer indices with endpoint demand.
| CARD OR ROW | READING AND SIGNIFICANCE | UNIT |
|---|---|---|
CDC read thread · threadx.read_state | ThreadX state of the USB OUT reader. Semaphore wait (6) is normal when no host data is available. Values. | Raw value / decoded state |
CDC write thread · threadx.write_state | ThreadX state of the USB IN writer. Event flags wait (7) is normal while waiting for UART data. Values. | Raw value / decoded state |
UART producer index · app.tx_in | UART producer position in the 2048-byte ring. It advances on received UART bytes and wraps; it is not a lifetime byte counter. | Raw value / decoded state |
USB consumer index · app.tx_out | USB consumer position in the 2048-byte ring. It advances by bytes actually written to USB and wraps. Compare progress with the producer; equality alone cannot prove no past overflow. | Raw value / decoded state |
Queue and allocator details
The control queue is separate from the UART/CDC payload ring. Bare ring indices cannot establish overflow or lost bytes. Allocator minimum-free and queue full/timeout statistics are not enabled in the example firmware. The two USBX pools may share storage; do not add their sizes.
| CARD OR ROW | READING AND SIGNIFICANCE | UNIT |
|---|---|---|
Control message size · app.control_queue.message_words | Words per control message, one 32-bit ULONG in this firmware. Multiply by four for payload bytes per message, not total queue object size. | 32-bit words |
Control queue free slots · app.control_queue.available | Free message slots. Below 20% of five slots means zero free slots; a sampled full queue does not prove a dropped message. | slots |
Threads waiting on control queue · app.control_queue.waiters | Threads suspended on the control queue. A waiting receiver is normal while no start/stop event is pending. | Raw value / decoded state |
Regular pool fragments · usbx.memory.regular.fragments | Allocator block-fragment count, including allocator bookkeeping blocks. It is not the number or size of free blocks, nor a high-water mark; use it only as context for allocation pressure. | Raw value / decoded state |
Cache-safe pool fragments · usbx.memory.cache_safe.fragments | Allocator block-fragment count, including allocator bookkeeping blocks. It is not the number or size of free blocks, nor a high-water mark; use it only as context for allocation pressure. | Raw value / decoded state |
Every sampled input
All paths below come from the downloadable definition. Integer types specify width and signedness. No scaling is applied to a raw read. A field without a declared unit is a code, count, address or raw register; its engineering meaning is explained above or below.
| INPUT | SOURCE / ADDRESS PATH | TYPE | INTERPRETATION / ACCESS |
|---|---|---|---|
usb.gahbcfg | OTG_FS.GAHBCFG | u32 | AHB configuration word. Bit 0 gates delivery of controller interrupts; inspect this before blaming a Configured-but-stalled USBX stack. Guard: (RCC.RCC_AHB2ENR1 & 0x4000) = 0x4000. The USB OTG peripheral clock must be enabled (RCC OTGEN). |
usb.dctl | OTG_FS.DCTL | u32 | Device control word. Bit 1 is software disconnect; a set bit can explain failed enumeration even with the target cable present. Guard: (RCC.RCC_AHB2ENR1 & 0x4000) = 0x4000. The USB OTG peripheral clock must be enabled (RCC OTGEN). |
usb.dsts | OTG_FS.DSTS | u32 | Device status word. Suspend and enumerated-speed fields describe controller state, not measured traffic throughput. Guard: (RCC.RCC_AHB2ENR1 & 0x4000) = 0x4000. The USB OTG peripheral clock must be enabled (RCC OTGEN). |
usb.dcfg | OTG_FS.DCFG | u32 | Device configuration word. Bits 10:4 contain the host-assigned USB address. Guard: (RCC.RCC_AHB2ENR1 & 0x4000) = 0x4000. The USB OTG peripheral clock must be enabled (RCC OTGEN). |
usb.gintmsk | OTG_FS.GINTMSK | u32 | Individual interrupt mask. A globally enabled controller can still have individual interrupt sources masked. Guard: (RCC.RCC_AHB2ENR1 & 0x4000) = 0x4000. The USB OTG peripheral clock must be enabled (RCC OTGEN). |
usbx.device_state | (*_ux_system_slave).ux_system_slave_device.ux_slave_device_state | u32 | See its card/table above. |
usbx.configuration | (*_ux_system_slave).ux_system_slave_device.ux_slave_device_configuration_selected | u32 | See its card/table above. |
usbx.baud | (*cdc_acm).ux_slave_class_cdc_acm_baudrate | u32 | See its card/table above. |
usbx.dtr | (*cdc_acm).ux_slave_class_cdc_acm_data_dtr_state | u8 | See its card/table above. |
usbx.rts | (*cdc_acm).ux_slave_class_cdc_acm_data_rts_state | u8 | See its card/table above. |
usbx.ep1.address | (*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_descriptor.bEndpointAddress | u8 | See its card/table above. |
usbx.ep1.status | (*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_status | u32 | See its card/table above. |
usbx.ep1.requested_length | (*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_requested_length | u32 | See its card/table above. |
usbx.ep1.actual_length | (*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_actual_length | u32 | See its card/table above. |
usbx.ep1.completion_code | (*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_completion_code | u32 | See its card/table above. |
usbx.ep2.address | (*(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_next_endpoint).ux_slave_endpoint_descriptor.bEndpointAddress | u8 | See its card/table above. |
usbx.ep2.status | (*(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_next_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_status | u32 | See its card/table above. |
usbx.ep2.requested_length | (*(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_next_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_requested_length | u32 | See its card/table above. |
usbx.ep2.actual_length | (*(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_next_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_actual_length | u32 | See its card/table above. |
usbx.ep2.completion_code | (*(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_next_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_completion_code | u32 | See its card/table above. |
threadx.read_state | ux_cdc_read_thread.tx_thread_state | u32 | See its card/table above. |
threadx.write_state | ux_cdc_write_thread.tx_thread_state | u32 | See its card/table above. |
app.tx_in | UserTxBufPtrIn | u32 | See its card/table above. |
app.tx_out | UserTxBufPtrOut | u32 | See its card/table above. |
usbx.last_error | (*_ux_system).ux_system_last_error | u32 | See its card/table above. |
usbx.error_count | (*_ux_system).ux_system_error_count | u32 | See its card/table above. Counter policy: monotonic. |
app.control_queue.enqueued | ux_app_MsgQueue.tx_queue_enqueued | u32 | See its card/table above. |
app.control_queue.capacity | ux_app_MsgQueue.tx_queue_capacity | u32 | See its card/table above. |
app.control_queue.available | ux_app_MsgQueue.tx_queue_available_storage | u32 | See its card/table above. |
app.control_queue.message_words | ux_app_MsgQueue.tx_queue_message_size | u32 | See its card/table above. |
app.control_queue.waiters | ux_app_MsgQueue.tx_queue_suspended_count | u32 | See its card/table above. |
usbx.memory.regular.free | (*(*_ux_system).ux_system_memory_byte_pool[0]).ux_byte_pool_available | u32 | See its card/table above. |
usbx.memory.regular.total | (*(*_ux_system).ux_system_memory_byte_pool[0]).ux_byte_pool_size | u32 | See its card/table above. |
usbx.memory.regular.fragments | (*(*_ux_system).ux_system_memory_byte_pool[0]).ux_byte_pool_fragments | u32 | See its card/table above. |
usbx.memory.cache_safe.free | (*(*_ux_system).ux_system_memory_byte_pool[1]).ux_byte_pool_available | u32 | See its card/table above. |
usbx.memory.cache_safe.total | (*(*_ux_system).ux_system_memory_byte_pool[1]).ux_byte_pool_size | u32 | See its card/table above. |
usbx.memory.cache_safe.fragments | (*(*_ux_system).ux_system_memory_byte_pool[1]).ux_byte_pool_fragments | u32 | See its card/table above. |
wrapping tells analysis to account for rollover at the declared integer width; a reset can look like a wrap, and multiple wraps between samples cannot be recovered. monotonic uses sampled increases without inventing a reset/wrap delta. clear_on_read reports a consuming read interval, not a lifetime total. A display styled as a counter does not itself establish any of these policies.
Derived fields and rates
| CHANNEL | CALCULATION | MEANING | UNIT |
|---|---|---|---|
usb.interrupts_enabled | (usb.gahbcfg >> 0) & 0x1 | Global interrupt delivery: 0 disabled, 1 enabled. Enabled does not prove NVIC delivery or ISR servicing. Values. | Code / state |
usb.soft_disconnect | (usb.dctl >> 1) & 0x1 | 0 means connected by software; 1 means held disconnected. It does not detect the cable. Values. | Code / state |
usb.suspended | (usb.dsts >> 0) & 0x1 | 0 active bus, 1 suspended. Host power management can make suspension normal. Values. | Code / state |
usb.address | (usb.dcfg >> 4) & 0x7f | USB device address, 0–127. Zero is the default address during enumeration; compare with stack configuration. | Code / state |
usb.enumerated_speed | (usb.dsts >> 1) & 0x3 | Encoded enumerated speed, not a throughput measurement. Value 3 means full speed with the 48 MHz PHY in this example. Values. | Code / state |
Rates need two valid samples at increasing timestamps and are interval averages. Gaps break the calculation. A negative raw delta is clamped to zero by the rate calculation; do not infer an instantaneous event rate from a reset. Unknown map keys pass through numerically; an unmapped code is not a validated physical measurement.
Findings
USB interrupt delivery disabled
error · usb-global-interrupts-disabled. usb.interrupts_enabled ≤ 0 for 500 ms of observations.
The OTG_FS global interrupt enable remained clear for at least 500 ms while the USB peripheral clock was enabled. The USBX CDC ACM interrupt-driven driver cannot service USB interrupts in this state. Check HAL_PCD_Start / USB_EnableGlobalInt and code that masks GAHBCFG.GINTMSK. This check is specific to the STM32Cube USBX CDC ACM example; deliberate polling-only drivers may disable this bit. USBX may still report Configured while interrupt delivery is disabled. Compare endpoint pending work and producer/consumer indices to see which work has stopped; waiting threads alone are not an error, and polled transfer fields do not count every transfer.
Evidence: usb.gahbcfg, usb.interrupts_enabled, usb.gintmsk, usbx.device_state, usbx.configuration, usbx.ep1.status, usbx.ep2.status, app.tx_in, app.tx_out, threadx.read_state, threadx.write_state.
USB device held in software disconnect
warning · usb-software-disconnected. usb.soft_disconnect ≥ 1 for 500 ms of observations.
DCTL.SDIS remained set for at least 500 ms. The controller is disconnected from the host by software, so the CDC port cannot enumerate or carry data. Check USB_DevConnect / HAL_PCD_Start and intentional disconnect or power-management paths. This is controller state; it does not prove that a cable is missing or that a USBX thread is faulty.
Evidence: usb.dctl, usb.soft_disconnect, usb.address, usb.suspended.
USBX error-handler count increased
info · usbx-error-reports. usbx.error_count increases between valid samples.
The firmware reported additional codes through the USBX error handler between these samples. The last code is context, not a complete log or proof of an active fault. Resets, aborts and device removal may be intentional. API errors that bypass this handler are not counted. A counter decrease ends an advance interval; no reset/wrap delta is inferred.
Evidence: usbx.error_count, usbx.last_error.
CDC endpoint 1 error code observed
warning · usbx-ep1-completion. usbx.ep1.completion_code is one of: 255, 253, 251, 250, 248, 247, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 33, 34, 35, 36, 39, 41, 49, 50, 51, 65, 66, 67, 68, 69, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 128, 129, 130, 144, 145, 146, 147.
A sampled endpoint completion field contained a recognized error code. Inspect its named code, endpoint direction and transfer state. This is the current or most recent request field, not an active-fault flag or a complete transfer log. Repeated samples do not count repeated failures. Pending receives and ordinary thread waits are normal; reset, abort and not-ready codes are excluded.
Evidence: usbx.ep1.address, usbx.ep1.status, usbx.ep1.completion_code, usbx.ep1.requested_length, usbx.ep1.actual_length.
CDC endpoint 2 error code observed
warning · usbx-ep2-completion. usbx.ep2.completion_code is one of: 255, 253, 251, 250, 248, 247, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 33, 34, 35, 36, 39, 41, 49, 50, 51, 65, 66, 67, 68, 69, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 128, 129, 130, 144, 145, 146, 147.
A sampled endpoint completion field contained a recognized error code. Inspect its named code, endpoint direction and transfer state. This is the current or most recent request field, not an active-fault flag or a complete transfer log. Repeated samples do not count repeated failures. Pending receives and ordinary thread waits are normal; reset, abort and not-ready codes are excluded.
Evidence: usbx.ep2.address, usbx.ep2.status, usbx.ep2.completion_code, usbx.ep2.requested_length, usbx.ep2.actual_length.
Control queue full or nearly full
warning · usbx-control-queue-pressure. app.control_queue.available < 0.2 × app.control_queue.capacity for 0 ms of observations.
A sample found fewer than 20% of control-message slots free. For this five-slot queue that means full. This queue carries USB start/stop messages, not CDC payload bytes. Sampling can miss brief fullness; this does not prove a dropped message or an exact occupancy peak.
Evidence: app.control_queue.enqueued, app.control_queue.capacity, app.control_queue.available, app.control_queue.message_words.
USBX regular memory below 10% free
warning · usbx-memory-regular-pressure. usbx.memory.regular.free < 0.1 × usbx.memory.regular.total for 0 ms of observations.
A sample found less than 10% of the pool free. This is a pressure threshold, not proof of allocation failure. Free space may be fragmented and does not establish the largest available block. The cache-safe pool may alias the regular pool.
Evidence: usbx.memory.regular.free, usbx.memory.regular.total, usbx.memory.regular.fragments.
USBX cache-safe memory below 10% free
warning · usbx-memory-cache_safe-pressure. usbx.memory.cache_safe.free < 0.1 × usbx.memory.cache_safe.total for 0 ms of observations.
A sample found less than 10% of the pool free. This is a pressure threshold, not proof of allocation failure. Free space may be fragmented and does not establish the largest available block. The cache-safe pool may alias the regular pool.
Evidence: usbx.memory.cache_safe.free, usbx.memory.cache_safe.total, usbx.memory.cache_safe.fragments.
Value dictionaries
These are the exact value mappings in this version of the descriptor. Unlisted status codes remain numeric; they are not implicitly success. Decode a value in the context of its field and validity.
Value map 1
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
0 | No error recorded (0) |
255 | Error (UX_ERROR) |
254 | Busy (UX_BUSY) |
253 | Timeout (UX_TIMEOUT) |
252 | Reentry (UX_REENTRY) |
251 | Invalid state (UX_INVALID_STATE) |
250 | Invalid parameter (UX_INVALID_PARAMETER) |
249 | Aborted (UX_ABORTED) |
248 | Math overflow (UX_MATH_OVERFLOW) |
247 | Invalid build option (UX_INVALID_BUILD_OPTION) |
17 | Too many devices (UX_TOO_MANY_DEVICES) |
18 | Memory insufficient (UX_MEMORY_INSUFFICIENT) |
19 | No td available (UX_NO_TD_AVAILABLE) |
20 | No ed available (UX_NO_ED_AVAILABLE) |
21 | Semaphore error (UX_SEMAPHORE_ERROR) |
22 | Thread error (UX_THREAD_ERROR) |
23 | Mutex error (UX_MUTEX_ERROR) |
24 | Event error (UX_EVENT_ERROR) |
25 | Memory corrupted (UX_MEMORY_CORRUPTED) |
26 | Memory array full (UX_MEMORY_ARRAY_FULL) |
27 | Fatal error (UX_FATAL_ERROR) |
28 | Already activated (UX_ALREADY_ACTIVATED) |
33 | Transfer stalled (UX_TRANSFER_STALLED) |
34 | Transfer no answer (UX_TRANSFER_NO_ANSWER) |
35 | Transfer error (UX_TRANSFER_ERROR) |
36 | Transfer missed frame (UX_TRANSFER_MISSED_FRAME) |
37 | Transfer not ready (UX_TRANSFER_NOT_READY) |
38 | Transfer bus reset (UX_TRANSFER_BUS_RESET) |
39 | Transfer buffer overflow (UX_TRANSFER_BUFFER_OVERFLOW) |
40 | Transfer application reset (UX_TRANSFER_APPLICATION_RESET) |
41 | Transfer data less than expected (UX_TRANSFER_DATA_LESS_THAN_EXPECTED) |
49 | Port reset failed (UX_PORT_RESET_FAILED) |
50 | Controller init failed (UX_CONTROLLER_INIT_FAILED) |
51 | Controller dead (UX_CONTROLLER_DEAD) |
65 | No bandwidth available (UX_NO_BANDWIDTH_AVAILABLE) |
66 | Descriptor corrupted (UX_DESCRIPTOR_CORRUPTED) |
67 | Over current condition (UX_OVER_CURRENT_CONDITION) |
68 | Device enumeration failure (UX_DEVICE_ENUMERATION_FAILURE) |
69 | Too many hub ports (UX_TOO_MANY_HUB_PORTS) |
80 | Device handle unknown (UX_DEVICE_HANDLE_UNKNOWN) |
81 | Configuration handle unknown (UX_CONFIGURATION_HANDLE_UNKNOWN) |
82 | Interface handle unknown (UX_INTERFACE_HANDLE_UNKNOWN) |
83 | Endpoint handle unknown (UX_ENDPOINT_HANDLE_UNKNOWN) |
84 | Function not supported (UX_FUNCTION_NOT_SUPPORTED) |
85 | Controller unknown (UX_CONTROLLER_UNKNOWN) |
86 | Port index unknown (UX_PORT_INDEX_UNKNOWN) |
87 | No class match (UX_NO_CLASS_MATCH) |
88 | Host class already installed (UX_HOST_CLASS_ALREADY_INSTALLED) |
89 | Host class unknown (UX_HOST_CLASS_UNKNOWN) |
90 | Connection incompatible (UX_CONNECTION_INCOMPATIBLE) |
91 | Host class instance unknown (UX_HOST_CLASS_INSTANCE_UNKNOWN) |
92 | Transfer timeout (UX_TRANSFER_TIMEOUT) |
93 | Buffer overflow (UX_BUFFER_OVERFLOW) |
94 | No alternate setting (UX_NO_ALTERNATE_SETTING) |
95 | No device connected (UX_NO_DEVICE_CONNECTED) |
96 | Host class protocol error (UX_HOST_CLASS_PROTOCOL_ERROR) |
97 | Host class memory error (UX_HOST_CLASS_MEMORY_ERROR) |
98 | Host class media not supported (UX_HOST_CLASS_MEDIA_NOT_SUPPORTED) |
99 | Class malformed packet received error (UX_CLASS_MALFORMED_PACKET_RECEIVED_ERROR) |
112 | Host class hid report overflow (UX_HOST_CLASS_HID_REPORT_OVERFLOW) |
113 | Host class hid usage overflow (UX_HOST_CLASS_HID_USAGE_OVERFLOW) |
114 | Host class hid tag unsupported (UX_HOST_CLASS_HID_TAG_UNSUPPORTED) |
115 | Host class hid push overflow (UX_HOST_CLASS_HID_PUSH_OVERFLOW) |
116 | Host class hid pop underflow (UX_HOST_CLASS_HID_POP_UNDERFLOW) |
117 | Host class hid collection overflow (UX_HOST_CLASS_HID_COLLECTION_OVERFLOW) |
118 | Host class hid collection underflow (UX_HOST_CLASS_HID_COLLECTION_UNDERFLOW) |
119 | Host class hid min max error (UX_HOST_CLASS_HID_MIN_MAX_ERROR) |
120 | Host class hid delimiter error (UX_HOST_CLASS_HID_DELIMITER_ERROR) |
121 | Host class hid report error (UX_HOST_CLASS_HID_REPORT_ERROR) |
122 | Host class hid periodic report error (UX_HOST_CLASS_HID_PERIODIC_REPORT_ERROR) |
123 | Host class hid unknown (UX_HOST_CLASS_HID_UNKNOWN) |
128 | Host class audio wrong type (UX_HOST_CLASS_AUDIO_WRONG_TYPE) |
129 | Host class audio wrong interface (UX_HOST_CLASS_AUDIO_WRONG_INTERFACE) |
130 | Host class audio wrong frequency (UX_HOST_CLASS_AUDIO_WRONG_FREQUENCY) |
144 | Class eth link state down error (UX_CLASS_ETH_LINK_STATE_DOWN_ERROR) |
145 | Class eth packet pool error (UX_CLASS_ETH_PACKET_POOL_ERROR) |
146 | Class eth packet error (UX_CLASS_ETH_PACKET_ERROR) |
147 | Class eth size error (UX_CLASS_ETH_SIZE_ERROR) |
Value map 2
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
0 | Disabled |
1 | Enabled |
Value map 3
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
0 | Connected by software |
1 | Software disconnected |
Value map 4
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
0 | Active bus |
1 | Suspended |
Value map 5
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
0 | Reset |
1 | Attached |
2 | Addressed |
3 | Configured |
4 | Suspended |
Value map 6
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
0 | Not asserted |
1 | Asserted |
Value map 7
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
1 | 0x01 - OUT (host to device) |
129 | 0x81 - IN (device to host) |
2 | 0x02 - OUT (host to device) |
130 | 0x82 - IN (device to host) |
Value map 8
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
0 | Not pending |
1 | Pending |
2 | Completed |
4 | Aborted |
Value map 9
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
0 | Success code (UX_SUCCESS) |
255 | Error (UX_ERROR) |
254 | Busy (UX_BUSY) |
253 | Timeout (UX_TIMEOUT) |
252 | Reentry (UX_REENTRY) |
251 | Invalid state (UX_INVALID_STATE) |
250 | Invalid parameter (UX_INVALID_PARAMETER) |
249 | Aborted (UX_ABORTED) |
248 | Math overflow (UX_MATH_OVERFLOW) |
247 | Invalid build option (UX_INVALID_BUILD_OPTION) |
17 | Too many devices (UX_TOO_MANY_DEVICES) |
18 | Memory insufficient (UX_MEMORY_INSUFFICIENT) |
19 | No td available (UX_NO_TD_AVAILABLE) |
20 | No ed available (UX_NO_ED_AVAILABLE) |
21 | Semaphore error (UX_SEMAPHORE_ERROR) |
22 | Thread error (UX_THREAD_ERROR) |
23 | Mutex error (UX_MUTEX_ERROR) |
24 | Event error (UX_EVENT_ERROR) |
25 | Memory corrupted (UX_MEMORY_CORRUPTED) |
26 | Memory array full (UX_MEMORY_ARRAY_FULL) |
27 | Fatal error (UX_FATAL_ERROR) |
28 | Already activated (UX_ALREADY_ACTIVATED) |
33 | Transfer stalled (UX_TRANSFER_STALLED) |
34 | Transfer no answer (UX_TRANSFER_NO_ANSWER) |
35 | Transfer error (UX_TRANSFER_ERROR) |
36 | Transfer missed frame (UX_TRANSFER_MISSED_FRAME) |
37 | Transfer not ready (UX_TRANSFER_NOT_READY) |
38 | Transfer bus reset (UX_TRANSFER_BUS_RESET) |
39 | Transfer buffer overflow (UX_TRANSFER_BUFFER_OVERFLOW) |
40 | Transfer application reset (UX_TRANSFER_APPLICATION_RESET) |
41 | Transfer data less than expected (UX_TRANSFER_DATA_LESS_THAN_EXPECTED) |
49 | Port reset failed (UX_PORT_RESET_FAILED) |
50 | Controller init failed (UX_CONTROLLER_INIT_FAILED) |
51 | Controller dead (UX_CONTROLLER_DEAD) |
65 | No bandwidth available (UX_NO_BANDWIDTH_AVAILABLE) |
66 | Descriptor corrupted (UX_DESCRIPTOR_CORRUPTED) |
67 | Over current condition (UX_OVER_CURRENT_CONDITION) |
68 | Device enumeration failure (UX_DEVICE_ENUMERATION_FAILURE) |
69 | Too many hub ports (UX_TOO_MANY_HUB_PORTS) |
80 | Device handle unknown (UX_DEVICE_HANDLE_UNKNOWN) |
81 | Configuration handle unknown (UX_CONFIGURATION_HANDLE_UNKNOWN) |
82 | Interface handle unknown (UX_INTERFACE_HANDLE_UNKNOWN) |
83 | Endpoint handle unknown (UX_ENDPOINT_HANDLE_UNKNOWN) |
84 | Function not supported (UX_FUNCTION_NOT_SUPPORTED) |
85 | Controller unknown (UX_CONTROLLER_UNKNOWN) |
86 | Port index unknown (UX_PORT_INDEX_UNKNOWN) |
87 | No class match (UX_NO_CLASS_MATCH) |
88 | Host class already installed (UX_HOST_CLASS_ALREADY_INSTALLED) |
89 | Host class unknown (UX_HOST_CLASS_UNKNOWN) |
90 | Connection incompatible (UX_CONNECTION_INCOMPATIBLE) |
91 | Host class instance unknown (UX_HOST_CLASS_INSTANCE_UNKNOWN) |
92 | Transfer timeout (UX_TRANSFER_TIMEOUT) |
93 | Buffer overflow (UX_BUFFER_OVERFLOW) |
94 | No alternate setting (UX_NO_ALTERNATE_SETTING) |
95 | No device connected (UX_NO_DEVICE_CONNECTED) |
96 | Host class protocol error (UX_HOST_CLASS_PROTOCOL_ERROR) |
97 | Host class memory error (UX_HOST_CLASS_MEMORY_ERROR) |
98 | Host class media not supported (UX_HOST_CLASS_MEDIA_NOT_SUPPORTED) |
99 | Class malformed packet received error (UX_CLASS_MALFORMED_PACKET_RECEIVED_ERROR) |
112 | Host class hid report overflow (UX_HOST_CLASS_HID_REPORT_OVERFLOW) |
113 | Host class hid usage overflow (UX_HOST_CLASS_HID_USAGE_OVERFLOW) |
114 | Host class hid tag unsupported (UX_HOST_CLASS_HID_TAG_UNSUPPORTED) |
115 | Host class hid push overflow (UX_HOST_CLASS_HID_PUSH_OVERFLOW) |
116 | Host class hid pop underflow (UX_HOST_CLASS_HID_POP_UNDERFLOW) |
117 | Host class hid collection overflow (UX_HOST_CLASS_HID_COLLECTION_OVERFLOW) |
118 | Host class hid collection underflow (UX_HOST_CLASS_HID_COLLECTION_UNDERFLOW) |
119 | Host class hid min max error (UX_HOST_CLASS_HID_MIN_MAX_ERROR) |
120 | Host class hid delimiter error (UX_HOST_CLASS_HID_DELIMITER_ERROR) |
121 | Host class hid report error (UX_HOST_CLASS_HID_REPORT_ERROR) |
122 | Host class hid periodic report error (UX_HOST_CLASS_HID_PERIODIC_REPORT_ERROR) |
123 | Host class hid unknown (UX_HOST_CLASS_HID_UNKNOWN) |
128 | Host class audio wrong type (UX_HOST_CLASS_AUDIO_WRONG_TYPE) |
129 | Host class audio wrong interface (UX_HOST_CLASS_AUDIO_WRONG_INTERFACE) |
130 | Host class audio wrong frequency (UX_HOST_CLASS_AUDIO_WRONG_FREQUENCY) |
144 | Class eth link state down error (UX_CLASS_ETH_LINK_STATE_DOWN_ERROR) |
145 | Class eth packet pool error (UX_CLASS_ETH_PACKET_POOL_ERROR) |
146 | Class eth packet error (UX_CLASS_ETH_PACKET_ERROR) |
147 | Class eth size error (UX_CLASS_ETH_SIZE_ERROR) |
Value map 10
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
0 | Ready |
1 | Completed |
2 | Terminated |
3 | Suspended |
4 | Sleeping |
5 | Queue wait |
6 | Semaphore wait |
7 | Event flags wait |
8 | Block memory wait |
9 | Byte memory wait |
13 | Mutex wait |
Value map 11
| RAW VALUE | DECODED LABEL / MAPPED VALUE |
|---|---|
0 | High speed |
1 | Full speed (30/60 MHz PHY) |
2 | Low speed |
3 | Full speed (48 MHz PHY) |
Definition and contribution
Verified against the USBX/ThreadX bridge application, ux_device_cdc_acm.c, app_usbx_device.c, USBX ux_api.h and allocator/error-handler implementations, ThreadX tx_api.h, the STM32U575 register definitions, and the shared domain decoder/card formatting. The descriptor supplies exact enum dictionaries below.
View or propose changes to the canonical JSON. Contribution guide.
Download SHA-256: 0ac59f1e9c33e210a9343cf86f929d426f6116324e2ff279ebd92b106646439e.