Достъпен е проектът 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 host);
- MCXA156 SDK 2.16 и FRDM-MCXA156.
Източник: opennet.ru
