De release van het TinyUSB-project 0.19 is beschikbaar, dat een cross-platform USB-stack ontwikkelt voor embedded systemen. Er worden USB-stackcomponenten voor USB-hosts (USB Host) en voor aangesloten apparaten (USB Device) aangeboden. De projectcode is geschreven in de programmeertaal C en wordt verspreid onder de MIT-licentie.
Om de veiligheid in TinyUSB te verhogen, worden geen dynamische geheugenallocaties uitgevoerd. Het gebruik in multithreaded applicaties wordt ondersteund. Voor veilige multithreaded werking worden alle gebeurtenissen met betrekking tot interrupt-lijsten niet onmiddellijk verwerkt zodra ze binnenkomen, maar in een wachtrij geplaatst die wordt afgehandeld in de context van de applicatie en niet van de interrupt-handler. Bij toegang tot gedeelde middelen, zoals FIFO CDC (Communication Device Class), worden semaforen en mutexen toegepast.
De stack is abstract van het besturingsysteem en kan worden gebruikt als een op zichzelf staand component zonder afhankelijkheid van besturingssysteemfunctionaliteit. Er zijn echter modules beschikbaar voor de integratie van TinyUSB met de besturingssystemen FreeRTOS, RT-Thread en Apache Mynewt. Vermogensbeheer mogelijkheden zoals slaapstand en ontwaken bij activiteit zijn beschikbaar. Er is een initiële implementatie van het PD 3.0 (Power Delivery) protocol voor energieoverdracht via USB Type-C.

TinyUSB maakt het mogelijk om ondersteuning voor eigen USB-apparaat- en hostklassen toe te voegen zonder de USB-stack te wijzigen. Onder de al ondersteunde klasses van apparaten in TinyUSB bevinden zich:
- UAC2 — Audio Class 2.0;
- BTH HCI — Bluetooth Host Controller Interface;
- CDC — Communication Device Class;
- DFU — Device Firmware Update;
- HID — Human Interface Device (toetsenbord, muis, gamepad);
- MSC — Mass Storage Class (inclusief schijven met meerdere logische apparaten);
- MIDI — Musical Instrument Digital Interface;
- MTP/PTP — Media Transfer Protocol;
- RNDIS, ECM (Ethernet Control Model) en NCM (Network Control Model) — netwerkintegratie via USB;
- USBTMC — Test and Measurement Class;
- UVC — Video class 1.5;
- WebUSB.
Verbeterde USB-hostklassen:
- HID — Human Interface Device;
- MSC — Mass Storage Class;
- CDC-ACM — Communication Device Class;
- FTDI, CP210x, CH34x, PL2303 — doorsturen van seriële poorten via USB;
- USB Hub.
In de nieuwe release is de API voor apparaten en hosts uitgebreid. De implementatie van de USB-host heeft ondersteuning gekregen voor apparaten met meerdere configuraties. Ondersteuning is toegevoegd voor microcontrollers en boards:
- ESP32-H4, ESP32-C5, ESP32-C61;
- STM32U0, STM32WBA, STM32N6;
- AT32F405, AT32F403A, AT32F415, AT32F423;
- CH32V305 en CH32V20x (USB host);
- MCXA156 SDK 2.16 en FRDM-MCXA156.
Bron: opennet.ru
