USB Stack Skill
Overview
This skill provides USB device and host stack implementation expertise for embedded systems, covering descriptor generation, device class implementation, and protocol debugging.
Capabilities
USB Descriptor Generation
- Device descriptor configuration
- Configuration descriptors
- Interface descriptors
- Endpoint descriptors
- String descriptors
- BOS descriptors (USB 3.x)
Device Class Implementation
- CDC (Communications Device Class)
- HID (Human Interface Device)
- MSC (Mass Storage Class)
- DFU (Device Firmware Upgrade)
- Audio class
- Video class
- Custom class implementation
USB Stack Configuration
- TinyUSB configuration
- STM32 USB stack setup
- NXP USB stack integration
- Zephyr USB subsystem
- Endpoint buffer management
Enumeration and Debugging
- Enumeration sequence debugging
- Protocol analysis
- USB analyzer integration
- Descriptor validation
- Compliance testing
Advanced Features
- Composite device configuration
- USB power delivery
- High-speed/full-speed selection
- Isochronous transfers
- Interrupt transfers
- Bulk transfers
DFU Implementation
- DFU bootloader design
- Runtime DFU mode
- Detach and download
- Upload capability
- Manifest phase handling
Target Processes
device-driver-development.js- USB driver implementationbootloader-implementation.js- USB DFU bootloaderhw-sw-interface-specification.js- USB interface specification
Dependencies
- TinyUSB or vendor USB stack
- USB protocol analyzers
- usb-tools (lsusb, usbmon)
Usage Context
This skill is invoked when tasks require:
- USB device implementation
- Device class development
- USB bootloader creation
- Protocol debugging
- Descriptor optimization
Device Class Examples
CDC Virtual COM Port
tusb_desc_interface_t cdc_interface = {
.bLength = sizeof(tusb_desc_interface_t),
.bDescriptorType = TUSB_DESC_INTERFACE,
.bInterfaceNumber = 0,
.bAlternateSetting = 0,
.bNumEndpoints = 2,
.bInterfaceClass = TUSB_CLASS_CDC,
.bInterfaceSubClass = CDC_COMM_SUBCLASS_ACM,
.bInterfaceProtocol = CDC_COMM_PROTOCOL_NONE,
.iInterface = 0
};
HID Report Descriptor
uint8_t const hid_report_desc[] = {
HID_USAGE_PAGE(HID_USAGE_PAGE_DESKTOP),
HID_USAGE(HID_USAGE_DESKTOP_MOUSE),
HID_COLLECTION(HID_COLLECTION_APPLICATION),
HID_USAGE(HID_USAGE_DESKTOP_POINTER),
HID_COLLECTION(HID_COLLECTION_PHYSICAL),
// ... buttons and axes
HID_COLLECTION_END,
HID_COLLECTION_END
};
Configuration
usb:
vid: 0x1234
pid: 0x5678
device_class: cdc | hid | msc | dfu | composite
speed: full | high
endpoints:
- ep1_in: bulk, 64
- ep1_out: bulk, 64