diff options
| author | hathach <[email protected]> | 2026-06-11 17:20:15 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2026-06-11 17:20:15 +0700 |
| commit | 5145b67f7946763ca04954f5494bfa88eec2acad (patch) | |
| tree | 9130540204c2404d532613adab01e88f4e918daa /README.rst | |
| parent | f52d9c7b27dc0234fb4738762a8a6da01817e2bf (diff) | |
| parent | 0244a4f12e019406a4b73c75cd96f8efa096bbdc (diff) | |
Merge remote-tracking branch 'origin/master' into stm32c5
# Conflicts:
# README.rst
Diffstat (limited to 'README.rst')
| -rw-r--r-- | README.rst | 212 |
1 files changed, 130 insertions, 82 deletions
diff --git a/README.rst b/README.rst index 1c56a6ba0..38a77f8f6 100644 --- a/README.rst +++ b/README.rst @@ -1,12 +1,32 @@ TinyUSB ======= -|Build Status| |CircleCI Status| |Documentation Status| |Static Analysis| |Fuzzing Status| |Membrowse| |License| +|Sponsor| |Build Status| |CircleCI Status| |Documentation Status| |Static Analysis| |Fuzzing Status| |Membrowse| |License| + +Overview +-------- + +.. figure:: docs/assets/logo.svg + :alt: TinyUSB + :align: left + +.. raw:: html + + <div class="clear-both"></div> + +TinyUSB is an open-source cross-platform USB Host/Device stack for embedded systems. It’s designed for memory safety +(no dynamic allocation) and thread safety (all interrupts deferred to non-ISR task functions). The stack emphasizes portability, +small footprint, and real-time performance across 50+ MCU families. Sponsors -------- -TinyUSB is funded by: Adafruit. Purchasing products from them helps to support this project. +TinyUSB's continued development is made possible by its sponsors. If TinyUSB helps your products or projects, consider funding its development on `GitHub Sponsors`_. + +Platinum +^^^^^^^^ + +`Adafruit`_ has backed TinyUSB since day one as its founding and sole Platinum sponsor. Buying their products directly funds the project's development. .. figure:: docs/assets/adafruit_logo.svg :alt: Adafruit Logo @@ -17,20 +37,44 @@ TinyUSB is funded by: Adafruit. Purchasing products from them helps to support t <div class="clear-both"></div> -Overview --------- +Sponsors (QWORD) +^^^^^^^^^^^^^^^^ -.. figure:: docs/assets/logo.svg - :alt: TinyUSB - :align: left +.. QWORD-SPONSORS-START -.. raw:: html +*No QWORD sponsors yet — be the first!* - <div class="clear-both"></div> +.. QWORD-SPONSORS-END -TinyUSB is an open-source cross-platform USB Host/Device stack for embedded systems. It’s designed for memory safety -(no dynamic allocation) and thread safety (all interrupts deferred to non-ISR task functions). The stack emphasizes portability, -small footprint, and real-time performance across 50+ MCU families. +Backers (DWORD) +^^^^^^^^^^^^^^^ + +.. DWORD-BACKERS-START + +*No backers yet — be the first!* + +.. DWORD-BACKERS-END + +Supporters (Word) +^^^^^^^^^^^^^^^^^ + +.. WORD-SUPPORTERS-START + +*No supporters yet — be the first!* + +.. WORD-SUPPORTERS-END + +Thanks (Byte) +^^^^^^^^^^^^^ + +.. BYTE-THANKS-START + +*No names listed yet — be the first!* + +.. BYTE-THANKS-END + +.. _GitHub Sponsors: https://github.com/sponsors/hathach +.. _Adafruit: https://www.adafruit.com Key Features ------------ @@ -130,155 +174,157 @@ TinyUSB is completely thread-safe by pushing all Interrupt Service Request (ISR) Supported CPUs -------------- - +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ | Manufacturer | Family | Device | Host | Highspeed | Driver | Note | +==============+=============================+========+======+===========+========================+====================+ -| Allwinner | F1C100s/F1C200s | ✔ | | ✔ | sunxi | musb variant | +| Allwinner | F1C100s/F1C200s | ✅ | | ✅ | sunxi | musb variant | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| Analog | MAX3421E | | ✔ | ✖ | max3421 | via SPI | +| Analog | MAX3421E | | ✅ | ❌ | max3421 | via SPI | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | MAX32 650, 666, 690, | ✔ | | ✔ | musb | 1-dir ep | +| | MAX32 650, 666, 690, | ✅ | | ✅ | musb | 1-dir ep | | | MAX78002 | | | | | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| Artery AT32 | F403a_407, F413 | ✔ | | | fsdev | 512 USB RAM | +| Artery AT32 | F403a_407, F413 | ✅ | | | fsdev | 512 USB RAM | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | F415, F435_437, F423, | ✔ | ✔ | | dwc2 | | +| | F415, F435_437, F423, | ✅ | ✅ | | dwc2 | | | | F425, F45x | | | | | | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | F402_F405 | ✔ | ✔ | ✔ | dwc2 | F405 is HS | +| | F402_F405 | ✅ | ✅ | ✅ | dwc2 | F405 is HS | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| Bridgetek | FT90x | ✔ | | ✔ | ft9xx | 1-dir ep | +| Bridgetek | FT90x | ✅ | | ✅ | ft9xx | 1-dir ep | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| Broadcom | BCM2711, BCM2837 | ✔ | | ✔ | dwc2 | | +| Broadcom | BCM2711, BCM2837 | ✅ | | ✅ | dwc2 | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| Dialog | DA1469x | ✔ | ✖ | ✖ | da146xx | | +| Dialog | DA1469x | ✅ | ❌ | ❌ | da146xx | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| Espressif | S2, S3, H4 | ✔ | ✔ | ✖ | dwc2 | | +| Espressif | S2, S3, H4 | ✅ | ✅ | ❌ | dwc2 | | | ESP32 +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | P4 | ✔ | ✔ | ✔ | dwc2 | | +| | P4 | ✅ | ✅ | ✅ | dwc2 | | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | S31 | ✔ | ✔ | ✔ | dwc2 | | +| | S31 | ✅ | ✅ | ✅ | dwc2 | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| GigaDevice | GD32VF103 | ✔ | | ✖ | dwc2 | | +| GigaDevice | GD32VF103 | ✅ | | ❌ | dwc2 | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| HPMicro | HPM6750 | ✔ | ✔ | ✔ | ci_hs, ehci | | +| HPMicro | HPM6750 | ✅ | ✅ | ✅ | ci_hs, ehci | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| Infineon | XMC4500 | ✔ | ✔ | ✖ | dwc2 | | +| Infineon | XMC4500 | ✅ | ✅ | ❌ | dwc2 | | +--------------+-----+-----------------------+--------+------+-----------+------------------------+--------------------+ -| MicroChip | SAM | D11, D21, L21, L22 | ✔ | | ✖ | samd | | +| MicroChip | SAM | D11, D21, L21, L22 | ✅ | | ❌ | samd | | | | +-----------------------+--------+------+-----------+------------------------+--------------------+ -| | | D51, E5x | ✔ | | ✖ | samd | | +| | | D51, E5x | ✅ | | ❌ | samd | | | | +-----------------------+--------+------+-----------+------------------------+--------------------+ -| | | G55 | ✔ | | ✖ | samg | 1-dir ep | +| | | G55 | ✅ | | ❌ | samg | 1-dir ep | | | +-----------------------+--------+------+-----------+------------------------+--------------------+ -| | | E70,S70,V70,V71 | ✔ | | ✔ | samx7x | 1-dir ep | +| | | E70,S70,V70,V71 | ✅ | | ✅ | samx7x | 1-dir ep | | +-----+-----------------------+--------+------+-----------+------------------------+--------------------+ -| | PIC | 24 | ✔ | | | pic | ci_fs variant | +| | PIC | 24 | ✅ | | | pic | ci_fs variant | | | +-----------------------+--------+------+-----------+------------------------+--------------------+ -| | | 32 mm, mk, mx | ✔ | | | pic | ci_fs variant | +| | | 32 mm, mk, mx | ✅ | | | pic | ci_fs variant | | | +-----------------------+--------+------+-----------+------------------------+--------------------+ -| | | dsPIC33 | ✔ | | | pic | ci_fs variant | +| | | dsPIC33 | ✅ | | | pic | ci_fs variant | | | +-----------------------+--------+------+-----------+------------------------+--------------------+ -| | | 32mz | ✔ | | | pic32mz | musb variant | +| | | 32mz | ✅ | | | pic32mz | musb variant | +--------------+-----+-----------------------+--------+------+-----------+------------------------+--------------------+ -| MindMotion | mm32 | ✔ | | ✖ | mm32f327x_otg | ci_fs variant | +| MindMotion | mm32 | ✅ | | ❌ | mm32f327x_otg | ci_fs variant | +--------------+-----+-----------------------+--------+------+-----------+------------------------+--------------------+ -| NordicSemi | nRF52, nRF53 | ✔ | ✖ | ✖ | nrf5x | only ep8 is ISO | +| NordicSemi | nRF52, nRF53 | ✅ | ❌ | ❌ | nrf5x | only ep8 is ISO | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | nRF54 | ✔ | ✖ | ✔ | dwc2 | | +| | nRF54 | ✅ | ❌ | ✅ | dwc2 | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| Nuvoton | NUC120 | ✔ | ✖ | ✖ | nuc120 | | +| Nuvoton | NUC120 | ✅ | ❌ | ❌ | nuc120 | | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | NUC121/NUC125, NUC126 | ✔ | ✖ | ✖ | nuc121 | | +| | NUC121/NUC125, NUC126 | ✅ | ❌ | ❌ | nuc121 | | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | NUC505 | ✔ | | ✔ | nuc505 | | +| | NUC505 | ✅ | | ✅ | nuc505 | | +--------------+---------+-------------------+--------+------+-----------+------------------------+--------------------+ -| NXP | iMXRT | RT 10xx, 11xx | ✔ | ✔ | ✔ | ci_hs, ehci | | +| NXP | iMXRT | RT 10xx, 11xx | ✅ | ✅ | ✅ | ci_hs, ehci | | | +---------+-------------------+--------+------+-----------+------------------------+--------------------+ -| | Kinetis | KL | ✔ | ⚠ | ✖ | ci_fs, khci | | +| | Kinetis | KL | ✅ | 🟡 | ❌ | ci_fs, khci | | | | +-------------------+--------+------+-----------+------------------------+--------------------+ -| | | K32L2 | ✔ | | ✖ | khci | ci_fs variant | +| | | K32L2 | ✅ | | ❌ | khci | ci_fs variant | | +---------+-------------------+--------+------+-----------+------------------------+--------------------+ -| | LPC | 11u, 13, 15 | ✔ | ✖ | ✖ | lpc_ip3511 | | +| | LPC | 11u, 13, 15 | ✅ | ❌ | ❌ | lpc_ip3511 | | | | +-------------------+--------+------+-----------+------------------------+--------------------+ -| | | 17, 40 | ✔ | ⚠ | ✖ | lpc17_40, ohci | | +| | | 17, 40 | ✅ | 🟡 | ❌ | lpc17_40, ohci | | | | +-------------------+--------+------+-----------+------------------------+--------------------+ -| | | 18, 43 | ✔ | ✔ | ✔ | ci_hs, ehci | | +| | | 18, 43 | ✅ | ✅ | ✅ | ci_hs, ehci | | | | +-------------------+--------+------+-----------+------------------------+--------------------+ -| | | 51u | ✔ | ✖ | ✖ | lpc_ip3511 | | +| | | 51u | ✅ | ❌ | ❌ | lpc_ip3511 | | | | +-------------------+--------+------+-----------+------------------------+--------------------+ -| | | 54 | ⚠ | ⚠ | ✔ | lpc_ip3511, lpc_ip3516 | NRND, read errata | +| | | 54 | 🟡 | 🟡 | ✅ | lpc_ip3511, lpc_ip3516 | NRND [1]_ | | | +-------------------+--------+------+-----------+------------------------+--------------------+ -| | | 55 | ✔ | ✔ | ✔ | lpc_ip3511, lpc_ip3516 | | +| | | 55 | ✅ | ✅ | ✅ | lpc_ip3511, lpc_ip3516 | | | +---------+-------------------+--------+------+-----------+------------------------+--------------------+ -| | MCX | N9 | ✔ | | ✔ | ci_fs, ci_hs, ehci | | +| | MCX | N9 | ✅ | | ✅ | ci_fs, ci_hs, ehci | | | | +-------------------+--------+------+-----------+------------------------+--------------------+ -| | | A15 | ✔ | | | ci_fs | | +| | | A15 | ✅ | | | ci_fs | | | +---------+-------------------+--------+------+-----------+------------------------+--------------------+ -| | RW61x | ✔ | ✔ | ✔ | ci_hs, ehci | | +| | RW61x | ✅ | ✅ | ✅ | ci_hs, ehci | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| Raspberry Pi | RP2040, RP2350 | ✔ | ✔ | ✖ | rp2040, pio_usb | | +| Raspberry Pi | RP2040, RP2350 | ✅ | ✅ | ❌ | rp2040, pio_usb | | +--------------+-----+-----------------------+--------+------+-----------+------------------------+--------------------+ -| Renesas | RX | 63N, 65N, 72N | ✔ | ✔ | ✖ | rusb2 | | +| Renesas | RX | 63N, 65N, 72N | ✅ | ✅ | ❌ | rusb2 | | | +-----+-----------------------+--------+------+-----------+------------------------+--------------------+ -| | RA | 4M1, 4M3, 6M1 | ✔ | ✔ | ✖ | rusb2 | | +| | RA | 4M1, 4M3, 6M1 | ✅ | ✅ | ❌ | rusb2 | | | | +-----------------------+--------+------+-----------+------------------------+--------------------+ -| | | 6M5 | ✔ | ✔ | ✔ | rusb2 | | +| | | 6M5 | ✅ | ✅ | ✅ | rusb2 | | +--------------+-----+-----------------------+--------+------+-----------+------------------------+--------------------+ -| Silabs | EFM32GG12 | ✔ | | ✖ | dwc2 | | +| Silabs | EFM32GG12 | ✅ | | ❌ | dwc2 | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| Sony | CXD56 | ✔ | ✖ | ✔ | cxd56 | | +| Sony | CXD56 | ✅ | ❌ | ✅ | cxd56 | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| ST STM32 | F0, F3, L0, L1, L5, WBx5 | ✔ | ✖ | ✖ | stm32_fsdev | | +| ST STM32 | F0, F3, L0, L1, L5, WBx5 | ✅ | ❌ | ❌ | stm32_fsdev | | | +----+------------------------+--------+------+-----------+------------------------+--------------------+ -| | F1 | 102, 103 | ✔ | ✖ | ✖ | stm32_fsdev | 512 USB RAM | +| | F1 | 102, 103 | ✅ | ❌ | ❌ | stm32_fsdev | 512 USB RAM | | | +------------------------+--------+------+-----------+------------------------+--------------------+ -| | | 105, 107 | ✔ | ✔ | ✖ | dwc2 | | +| | | 105, 107 | ✅ | ✅ | ❌ | dwc2 | | | +----+------------------------+--------+------+-----------+------------------------+--------------------+ -| | F2, F4, F7, H7, H7RS | ✔ | ✔ | ✔ | dwc2 | | +| | F2, F4, F7, H7, H7RS | ✅ | ✅ | ✅ | dwc2 | | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | C0, C5, G0, H5, U3 | ✔ | ✔ | ✖ | stm32_fsdev | 2KB USB RAM | +| | C0, C5, G0, H5, U3 | ✅ | ✅ | ❌ | stm32_fsdev | 2KB USB RAM | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | G4 | ✔ | ✖ | ✖ | stm32_fsdev | 1KB USB RAM | +| | G4 | ✅ | ❌ | ❌ | stm32_fsdev | 1KB USB RAM | | +----+------------------------+--------+------+-----------+------------------------+--------------------+ -| | L4 | 4x2, 4x3 | ✔ | ✖ | ✖ | stm32_fsdev | 1KB USB RAM | +| | L4 | 4x2, 4x3 | ✅ | ❌ | ❌ | stm32_fsdev | 1KB USB RAM | | | +------------------------+--------+------+-----------+------------------------+--------------------+ -| | | 4x5, 4x6, 4+ | ✔ | ✔ | ✖ | dwc2 | | +| | | 4x5, 4x6, 4+ | ✅ | ✅ | ❌ | dwc2 | | | +----+------------------------+--------+------+-----------+------------------------+--------------------+ -| | N6 | ✔ | ✔ | ✔ | dwc2 | | +| | N6 | ✅ | ✅ | ✅ | dwc2 | | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | U0 | ✔ | ✖ | ✖ | stm32_fsdev | 1KB USB RAM | +| | U0 | ✅ | ❌ | ❌ | stm32_fsdev | 1KB USB RAM | | +----+------------------------+--------+------+-----------+------------------------+--------------------+ -| | U5 | 535, 545 | ✔ | ✔ | ✖ | stm32_fsdev | 2KB USB RAM | +| | U5 | 535, 545 | ✅ | ✅ | ❌ | stm32_fsdev | 2KB USB RAM | | | +------------------------+--------+------+-----------+------------------------+--------------------+ -| | | 575, 585 | ✔ | ✔ | ✖ | dwc2 | | +| | | 575, 585 | ✅ | ✅ | ❌ | dwc2 | | | | +------------------------+--------+------+-----------+------------------------+--------------------+ -| | | 59x,5Ax,5Fx,5Gx | ✔ | ✔ | ✔ | dwc2 | | +| | | 59x,5Ax,5Fx,5Gx | ✅ | ✅ | ✅ | dwc2 | | +--------------+----+------------------------+--------+------+-----------+------------------------+--------------------+ -| TI | MSP430 | ✔ | ✖ | ✖ | msp430x5xx | | +| TI | MSP430 | ✅ | ❌ | ❌ | msp430x5xx | | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | MSP432E4, TM4C123 | ✔ | | ✖ | musb | | +| | MSP432E4, TM4C123 | ✅ | | ❌ | musb | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| ValentyUSB | eptri | ✔ | ✖ | ✖ | eptri | | +| ValentyUSB | eptri | ✅ | ❌ | ❌ | eptri | | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ -| WCH | CH32F20x | ✔ | | ✔ | ch32_usbhs | | +| WCH | CH32F20x | 🟡 | | ✅ | ch32_usbhs | ISO data loss [2]_ | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | CH32V20x | ✔ | | ✖ | stm32_fsdev/ch32_usbfs | | +| | CH32V20x | 🟡 | | ❌ | stm32_fsdev/ch32_usbfs | ISO data loss [2]_ | | +-----------------------------+--------+------+-----------+------------------------+--------------------+ -| | CH32V305, CH32V307 | ✔ | | ✔ | ch32_usbfs/hs | | +| | CH32V305, CH32V307 | 🟡 | | ✅ | ch32_usbfs/hs | ISO data loss [2]_ | +--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+ Table Legend ^^^^^^^^^^^^ ========= ========================= -✔ Supported -⚠ Partial support -✖ Not supported by hardware +✅ Supported +🟡 Partial support +❌ Not supported by hardware \[empty\] Unknown ========= ========================= +.. [1] NRND (Not Recommended for New Design), see `NXP LPC54600 issues <docs/reference/device_issues.rst#nxp-lpc54600>`_ +.. [2] ISO data loss, see `WCH CH32F20x/CH32V20x/CH32V30x issues <docs/reference/device_issues.rst#wch-ch32f20x-ch32v20x-ch32v30x>`_ + Development Tools ----------------- @@ -303,6 +349,8 @@ The following tools are provided freely to support the development of the TinyUS :target: https://membrowse.com/public/hathach/tinyusb .. |License| image:: https://img.shields.io/badge/license-MIT-brightgreen.svg :target: https://opensource.org/licenses/MIT +.. |Sponsor| image:: https://img.shields.io/badge/sponsor-%E2%9D%A4-ec6cb9.svg + :target: https://github.com/sponsors/hathach .. _Changelog: docs/info/changelog.rst |
