Представлена версия открытого 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;
Читать на habr.com