Достъпен е проектът TinyUSB 0.19, който развива кросплатформен USB стек за вградени системи. Предоставят се компоненти на USB стека за USB хостове (USB Host) и за свързани устройства (USB Device). Проектният код е написан на езика C и се разпространява под MIT лиценз.
За повишаване на сигурността в TinyUSB не се прилагат операции за динамично разпределение на памет. Поддържа се употреба в многопоточни приложения. За безопасна работа в многопоточно представяне, всички събития, свързани с възникване на прекъсвания, не се обработват веднага при получаване на ISR (Interrupt Service Request), а се поставят в опашка, която се разглежда и обработва в контекста на изпълняваното приложение, а не на обработчика на прекъсванията. При достъп до споделени ресурси, като FIFO CDC (Communication Device Class), се използват семафори и мютекси.
Стекът е абстрахиран от операционната система и може да се използва като самостоятелен компонент, независим от функционалността на операционните системи. В същото време са налични модули за интеграция на TinyUSB с ОС FreeRTOS, RT-Thread и Apache Mynewt. Поддържат се възможности за намаляване на енергопотреблението, като преход в спящ режим и събуждане при поява на активност. Налична е първоначална реализация на протокола PD 3.0 (Power Delivery) за управление на предаването на електрическа енергия през USB Type-C.

TinyUSB позволява добавяне на поддръжка на собствени класове USB устройства и хостове без модификация на USB стека. Сред вече поддържаните в TinyUSB класове устройства са:
- UAC2 — Audio Class 2.0;
- BTH HCI — Bluetooth Host Controller Interface;
- CDC — Communication Device Class;
- DFU — Device Firmware Update;
- HID — Human Interface Device (клавиатура, мишка, геймпад);
- MSC — Mass Storage Class (включително устройства с много логически устройства);
- MIDI — Musical Instrument Digital Interface;
- MTP/PTP — Media Transfer Protocol;
- RNDIS, ECM (Ethernet Control Model) и NCM (Network Control Model) — мрежово взаимодействие през USB;
- USBTMC — Test and Measurement Class;
- UVC — Video class 1.5;
- WebUSB.
Поддържаните класове USB хостове са:
- HID — Human Interface Device;
- MSC — Mass Storage Class;
- CDC-ACM — Communication Device Class;
- FTDI, CP210x, CH34x, PL2303 — пренос на последователен порт през USB;
- USB Hub.
В новия ъпдейт е разширен API за устройства и хостове. В реализацията на USB хост е добавена поддръжка на устройства с множество конфигурации. Добавена е поддръжка на микроконтролери и платформи:
- ESP32-H4, ESP32-C5, ESP32-C61;
- STM32U0, STM32WBA, STM32N6;
- AT32F405, AT32F403A, AT32F415, AT32F423;
- CH32V305 и CH32V20x (USB хост);
- MCXA156 SDK 2.16 и FRDM-MCXA156.
Източник: opennet.ru
