Overview of Azure RTOS USBX

Azure RTOS USBX is a high-performance USB host, device, and on-the-go (OTG) embedded stack. Azure RTOS USBX is fully integrated with Azure RTOS ThreadX and available for all ThreadX–supported processors. Like ThreadX, Azure RTOS USBX is designed to have a small footprint and high performance, making it ideal for deeply embedded applications that require an interface with USB devices.

Host, Device, OTG & Extensive Class Support

Azure RTOS USBX Host/Device embedded USB protocol stack is an Industrial Grade embedded USB solution designed specifically for deeply embedded, real-time, and IoT applications. Azure RTOS USBX provides host, device, and OTG support, as well as extensive class support. Azure RTOS USBX is fully integrated with ThreadX Real-Time Operating System, Azure RTOS FileX embedded FAT-compatible file system, Azure RTOS NetX, and Azure RTOS NetX Duo embedded TCP/IP stacks. All of this, combined with an extremely small footprint, fast execution and superior ease-of-use, make Azure RTOS USBX the ideal choice for the most demanding embedded IoT applications requiring USB connectivity.

Small-footprint

Azure RTOS USBX has a remarkably small minimal footprint of 10.5 KB of FLASH and 5.1 KB RAM for Azure RTOS USBX Device CDC/ACM support. Azure RTOS USBX Host requires a minimum of 18 KB of FLASH and 25 KB of RAM for CDC/ACM support.

An additional 10 KB to 13 KB of instruction area memory is needed for TCP functionality. Azure RTOS USBX RAM usage typically ranges from 2.6 KB to 3.6 KB plus the packet pool memory, which is defined by the application.

Like ThreadX, the size of Azure RTOS USBX automatically scales based on the services actually used by the application. This virtually eliminates the need for complicated configuration and build parameters, making things easier for the developer.

Fast execution

Azure RTOS USBX is designed for speed and has minimal internal function call layering and support for cache and DMA utilization. All of this and a general performance-oriented design philosophy helps Azure RTOS USBX achieve the fastest possible performance.

Simple, easy-to-use

Azure RTOS USBX is simple to use. The Azure RTOS USBX API is both intuitive and highly functional. The API names are made of real words and not the "alphabet soup" or highly abbreviated names that are so common in other file system products. All Azure RTOS USBX APIs have a leading "ux_" and follow a noun-verb naming convention. Furthermore, there is a functional consistency throughout the API. For example, all APIs that suspend have an optional timeout that functions in an identical manner for APIs.

USB Interoperability verification

Azure RTOS USBX Device Stack has been rigorously tested with the USB IF standard testing tool USBCV to ensure full compliance with the USB specifications and interoperability with different host systems. In addition, Azure RTOS USBX OTG stack has been verified and certified by the independent test lab Allion in Taiwan.

USB Host controller support

Azure RTOS USBX supports major USB standards like OHCI and EHCI. In addition, Azure RTOS USBX supports proprietary discrete USB host controllers from Atmel, Microchip, Philips, Renesas, ST, TI, and other vendors. Azure RTOS USBX also supports multiple host controllers in the same application. USB Device controller support Azure RTOS USBX supports popular USB device controllers from Analog Devices, Atmel, Microchip, NXP, Philips, Renesas, ST, TI, and other vendors.

Extensive Host Class support

Azure RTOS USBX Host provides support for most popular classes, including ASIX, AUDIO, CDC/ACM, CDC/ECM, GSER, HID (keyboard, mouse, and remote control), HUB, PIMA (PTP/MTP), PRINTER, PROLIFIC, and STORAGE.

Extensive USB Device Class support

Azure RTOS USBX Device provides support for most popular classes, including CDC/ACM, CDC/ECM, DFU, HID, PIMA (PTP/MTP) (w/MTP), RNDIS, and STORAGE. Support for custom classes is also available.

Pictbridge support

Azure RTOS USBX supports the full Pictbridge implementation both on the host and the device. Pictbridge sits on top of Azure RTOS USBX PIMA (PTP/MTP) class on both sides. The PictBridge standard allows the connection of a digital still camera or a smart phone directly to a printer without a PC, enabling direct printing to certain Pictbridge aware printers. When a camera or phone is connected to a printer, the printer is the USB host and the camera is the USB device. However, with Pictbridge, the camera will appear as being the host and commands are driven from the camera. The camera is the storage server, the printer the storage client. The camera is the print client and the printer is of course the print server. Pictbridge uses USB as a transport layer but relies on PTP (Picture Transfer Protocol) for the communication protocol.

Custom class support

Azure RTOS USBX Host and Device support custom classes. An example custom class is provided in the Azure RTOS USBX distribution. This simple data pump class is called DPUMP and can be used as a model for custom application classes. Advanced technology Azure RTOS USBX Host and Device support custom classes. An example custom class is provided in the Azure RTOS USBX distribution. Azure RTOS USBX is advanced technology that includes:

  • Host, Device, and OTG support
  • USB low, full, and high-speed support
  • Automatic scaling
  • Fully integrated with ThreadX, Azure RTOS FileX, and Azure RTOS NetX
  • Optional performance metrics
  • Azure RTOS TraceX system analysis support

Fastest time-to-market

Azure RTOS USBX has a remarkably small footprint of 9 KB to 15 KB for basic IP and UDP support. Azure RTOS USBX is easy to install, learn, use, debug, verify, certify, and maintain. As a result, Azure RTOS USBX is one of the most popular USB solutions for embedded IoT devices. Our consistent time-to-market advantage is built on:

  • quality documentation – please review our Azure RTOS USBX Host and Device User Guides and see for yourself!
  • complete source code availability
  • easy-to-use API
  • comprehensive and advanced feature set

One Simple License

There is no cost to use and test the source code and no cost for production licenses when deployed to pre-licensed devices, all other devices need a simple annual license.

Full, highest-quality source code

Throughout the years, Azure RTOS NetX source code has set the bar in quality and ease of understanding. In addition, the convention of having one function per file provides for easy source navigation.

Azure RTOS USBX runs on most popular 32/64-bit microprocessors, out-of-the-box, fully tested and fully supported, including the following:

  • Analog Devices: SHARC, Blackfin, CM4xx
  • Andes Core: RISC-V
  • Ambiqmicro: Apollo MCUs
  • ARM: ARM7, ARM9, ARM11, Cortex-M0/M3/M4/M7/A15/A5/A7/A8/A9/A5x 64-bi/A7x 64-bit/R4/R5, TrustZone ARMv8-M
  • Cadence: Xtensa, Diamond
  • CEVA: PSoC, PSoC 4, PSoC 5, PSoC 6, FM0+, FM3, MF4, WICED WiFi
  • Cypress: RISC-V
  • EnSilica: eSi-RISC
  • Infineon: XMC1000, XMC4000, TriCore
  • Intel & Intel FPGA: x36/Pentium, XScale, NIOS II, Cyclone, Arria 10
  • Microchip: AVR32, ARM7, ARM9, Cortex-M3/M4/M7, SAM3/4/7/9/A/C/D/E/G/L/SV, PIC24/PIC32
  • Microsemi: RISC-V
  • NXP: LPC, ARM7, ARM9, PowerPC, 68 K, i.MX, ColdFire, Kinetis Cortex-M3/M4
  • Renesas: SH, HS, V850, RX, RZ, Synergy Silicon Labs: EFM32
  • Synopsys: ARC 600, 700, ARC EM, ARC HS
  • ST: STM32, ARM7, ARM9, Cortex-M3/M4/M7
  • Tl: C5xxx, C6xxx, Stellaris, Sitara, Tiva-C
  • Wave Computing: MIPS32 4K, 24 K, 34 K, 1004 K, MIPS64 5K, microAptiv, interAptiv, proAptiv, M-Class Xilinx: MicroBlaze, PowerPC 405, ZYNQ, ZYNQ UltraSCALE

Azure RTOS USBX APIs

Azure RTOS USBX Host API

The Azure RTOS USBX Host API is an intuitive and consistent API, following a noun-verb naming convention. All APIs have leading ux_host_* to easily identify as USBX. Any blocking APIs have optional thread timeout.

API Description
ASIX Minimal 0.3 KB FLASH, 4 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX host APIs in this form: ux_host_class_asix_*
AUDIO Minimal 1.2 KB FLASH, 4 KB RAM
Automatic scaling
System-level trace via
Intuitive Azure RTOS USBX host APIs in this form: ux_host_class_audio_*
CDC/ACM Minimal 1.4 KB FLASH, 4 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX host APIs in this form: ux_host_class_cdc_acm_*
HID Minimal 0.3 KB FLASH, 4 KB RAM
Keyboard, mouse, and remote support
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX host APIs in this form: ux_host_class_hid_*
HUB Minimal 1.7 KB FLASH, 2 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX host APIs in this form: ux_host_class_hub_*
PIMA (PTP/MTP) Minimal 0.9 KB FLASH, 8 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX host APIs in this form: ux_host_class_pima_*
PRINTER Minimal 0.8 KB FLASH, 8 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX host APIs in this form: ux_host_class_printer_*
PROLIFIC Minimal 1.5 KB FLASH, 4 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX host APIs in this form: ux_host_class_prolific_*
STORAGE Minimal 5.6 KB FLASH, 4 KB RAM
Automatic scaling
Integrated with Azure RTOS FileX
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX host APIs in this form: ux_host_class_storage_*
USB Host STACK Supports many host controllers
Minimal 18 KB FLASH, 25 KB RAM
Automatic scaling
Support for multiple host controllers on same platform
USB low, full, and high-speed support
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX host APIs in this form: ux_host_stack_*
OHCI, EHCI, PROPRIETARY Host CONTROLLERS

Azure RTOS USBX Device API

The Azure RTOS USBX Device API is an intuitive and consistent API following a noun-verb naming convention. All APIs have leading ux_device_* to easily identify as USBX. Blocking APIs have optional thread timeout. Please see Azure RTOS USBX Host User Guide for more details.

API Description
CDC/ACM Minimal 0.8 KB FLASH, 2 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX device APIs in this form: ux_device_class_cdc_acm_*
CDC/ECM Minimal 1.5 KB FLASH, 4 KB to 8 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX device APIs in this form: ux_device_class_cdc_ecm_*
DFU Minimal 1.1 KB FLASH, 2 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX device APIs in this form: ux_device_class_dfu_*
GSER Minimal 0.6 KB FLASH, 4 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX device APIs in this form: ux_device_class_gser_*
HID Minimal 0.9 KB FLASH, 2 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX device APIs in this form: ux_device_class_hid_*
PIMA (PTP/MTP) Minimal 5.2 KB FLASH, 8 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX device APIs in this form: ux_device_class_pima_*
STORAGE Minimal 2.3 KB FLASH, 4 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX device APIs in this form: ux_device_class_storage_*
RNDIS Minimal 2.3 KB FLASH, 4 KB to 8 KB RAM
Automatic scaling
Integrated with Azure RTOS NetX and Azure RTOS NetX DUO
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX device APIs in this form: ux_device_class_rndls_*
Azure RTOS USBX Device STACK Minimal 2.3 KB FLASH, 4 KB RAM
Automatic scaling
System-level trace via Azure RTOS TraceX
Intuitive Azure RTOS USBX device APIs in this form: ux_device_class_storage_*
PROPRIETARY Host CONTROLLERS

Next steps

Start working with the Azure RTOS USBX Host and Device Stack by following our Host Stack User Guide or Device Stack User Guide.