TinyUSB 0.19: расширенная поддержка микроконтроллеров, многоконфигурационных устройств и безопасная архитектура для встраиваемых систем

Вышел релиз 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-классы без изменения ядра стека. Среди уже реализованных классов устройств:​
  • 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-устройств и хостов в мире встроенных систем.​
 
Назад
Сверху