Представлена версия открытого USB-стека TinyUSB 0.19

Представлен выпуск открытого проекта TinyUSB 0.19. В рамках этого решения развивается кроссплатформенный USB-стек для встраиваемых систем.В проекте предоставляются компоненты USB-стека для USB-хостов (USB Host) и для подключаемых устройств (USB Device). Исходный код TinyUSB написан на языке C и опубликован на GitHub под лицензией MIT. Разработка решения ведётся с 2019 года.

По информации OpenNET, для повышения безопасности в TinyUSB не применяются операции динамического выделения памяти. Поддерживается использование в многопоточных приложениях. Для безопасной многопоточной работы все события, связанные с возникновением прерываний, не обрабатываются сразу при поступлении ISR (Interrupt Service Request), а помещаются в очередь, которая разбирается и обрабатывается в контексте выполнения приложения, а не обработчика прерываний. При доступе к совместно используемым ресурсам, таким как FIFO CDC (Communication Device Class), применяются семафоры и мьютексы.

Стек TinyUSB абстрагирован от операционной системы и может использоваться как самодостаточный компонент, не привязанных к функциональности операционных систем. При этом доступны модули для интеграции 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.

Поддерживаемые TinyUSB классы USB‑хостов:

HID — Human Interface Device;

MSC — Mass Storage Class;

CDC‑ACM — Communication Device Class;

FTDI, CP210x, CH34x, PL2303 — проброс последовательного порта поверх USB;

USB Hub.

В новом выпуске TinyUSB расширен 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.

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии