Вышел релиз TinyUSB 0.19 — кроссплатформенного USB-стека, разработанного специально для встраиваемых систем. Проект предоставляет готовые компоненты как для USB-устройств, так и для USB-хостов, написан на языке C и распространяется под лицензией MIT.
Особое внимание в TinyUSB уделено безопасности и стабильности: стек полностью отказывается от динамического выделения памяти, что снижает риски утечек и фрагментации. Для корректной работы в многопоточной среде все прерывания (ISR) не обрабатываются напрямую, а помещаются в очередь, которая разбирается в контексте основного приложения. Доступ к разделяемым ресурсам, таким как FIFO в CDC (Communication Device Class), защищён с помощью семафоров и мьютексов.
TinyUSB спроектирован как ОС-независимый компонент и может использоваться автономно, без привязки к конкретной операционной системе. При этом доступны официальные модули интеграции с популярными RTOS: FreeRTOS, RT-Thread и Apache Mynewt. Также реализованы механизмы энергосбережения — переход в спящий режим и пробуждение по активности на шине USB. Кроме того, добавлена начальная поддержка протокола USB Power Delivery 3.0 для управления питанием через разъём USB Type-C.
Стек поддерживает гибкое расширение: разработчики могут добавлять собственные USB-классы без изменения ядра стека. Среди уже реализованных классов устройств:
Особое внимание в TinyUSB уделено безопасности и стабильности: стек полностью отказывается от динамического выделения памяти, что снижает риски утечек и фрагментации. Для корректной работы в многопоточной среде все прерывания (ISR) не обрабатываются напрямую, а помещаются в очередь, которая разбирается в контексте основного приложения. Доступ к разделяемым ресурсам, таким как FIFO в CDC (Communication Device Class), защищён с помощью семафоров и мьютексов.
TinyUSB спроектирован как ОС-независимый компонент и может использоваться автономно, без привязки к конкретной операционной системе. При этом доступны официальные модули интеграции с популярными RTOS: FreeRTOS, RT-Thread и Apache Mynewt. Также реализованы механизмы энергосбережения — переход в спящий режим и пробуждение по активности на шине USB. Кроме того, добавлена начальная поддержка протокола USB Power Delivery 3.0 для управления питанием через разъём USB Type-C.
Стек поддерживает гибкое расширение: разработчики могут добавлять собственные USB-классы без изменения ядра стека. Среди уже реализованных классов устройств:
- UAC2 (аудио),
- BTH HCI (Bluetooth),
- CDC, DFU, HID, MSC, MIDI, MTP/PTP,
- сетевые классы: RNDIS, ECM, NCM,
- USBTMC (измерительные приборы),
- UVC (видео 1.5),
- WebUSB.
Поддерживаемые классы хостов включают HID, MSC, CDC-ACM, драйверы для популярных USB-UART чипов (FTDI, CP210x, CH34x, PL2303), а также USB Hub.
В версии 0.19 значительно расширен API как для устройств, так и для хостов. В частности, хост-стек теперь корректно работает с устройствами, имеющими несколько USB-конфигураций. Также добавлена поддержка новых микроконтроллеров и плат:
- ESP32-H4, ESP32-C5, ESP32-C61 (Espressif),
- STM32U0, STM32WBA, STM32N6 (STMicroelectronics),
- AT32F405/403A/415/423 (Artery),
- CH32V305 и CH32V20x (WCH, с поддержкой хост-режима),
- MCXA156 SDK 2.16 и отладочная плата FRDM-MCXA156 (NXP).
Обновление делает TinyUSB ещё более универсальным и надёжным решением для разработки энергоэффективных, безопасных и переносимых USB-устройств и хостов в мире встроенных систем.