summaryrefslogtreecommitdiff
path: root/README.rst
diff options
context:
space:
mode:
authorhathach <[email protected]>2026-06-11 17:20:15 +0700
committerhathach <[email protected]>2026-06-11 17:20:15 +0700
commit5145b67f7946763ca04954f5494bfa88eec2acad (patch)
tree9130540204c2404d532613adab01e88f4e918daa /README.rst
parentf52d9c7b27dc0234fb4738762a8a6da01817e2bf (diff)
parent0244a4f12e019406a4b73c75cd96f8efa096bbdc (diff)
Merge remote-tracking branch 'origin/master' into stm32c5
# Conflicts: # README.rst
Diffstat (limited to 'README.rst')
-rw-r--r--README.rst212
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