Дата публикации:Mon, 06 Oct 2025 09:51:48 +0300
Доступен выпуск проекта TinyUSB 0.19, развивающего кроссплатформенный USB-стек для встраиваемых систем. Предоставляются компоненты USB-стека для USB-хостов (USB Host) и для подключаемых устройств (USB Device). Код проекта написан на языке Си и распространяется под лицензией 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.
- HID - Human Interface Device; MSC - Mass Storage Class; CDC-ACM - Communication Device Class; FTDI, CP210x, CH34x, PL2303 - проброс последовательного порт поверх USB; USB Hub.
- ESP32-H4, ESP32-C5, ESP32-C61; STM32U0, STM32WBA, STM32N6; AT32F405, AT32F403A, AT32F415, AT32F423; CH32V305 и CH32V20x (USB host); MCXA156 SDK 2.16 и FRDM-MCXA156.
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=64005