Об этом проекте

TinyUSB — это открытый кросс-платформенный стек USB Host/Device для встраиваемых систем. Он спроектирован с учётом безопасности памяти (без динамического выделения) и потокобезопасности (все прерывания откладываются в не-ISR задачи), с акцентом на переносимость, малый размер и производительность в реальном времени для более чем 50 семейств MCU. Ключевые особенности включают потокобезопасную работу через центральную очередь событий ISR, статические буферы без динамического выделения, переносимость на множество семейств MCU и поддержку CDC, HID, MSC, Audio и Host-функциональности. Работает с bare metal, FreeRTOS, RT-Thread и Mynewt. Структура репозитория включает docs, примеры с системами сборки make и cmake, BSP и драйверы MCU, сторонние библиотеки, исходники стека, тесты (модульные, фаззинг, аппаратные) и внутренние инструменты. Стек устройства поддерживает несколько конфигураций через динамические USB-дескрипторы, функции низкого энергопотребления (suspend, resume, remote wakeup) и классы: Audio 1.0/2.0, BTH HCI, CDC, DFU, HID, Printer, MSC с несколькими LUN, MIDI, MTP/PTP, RNDIS/ECM/NCM networking, USBTMC, UVC (в разработке), vendor-specific классы и WebUSB. Пользовательские драйверы классов можно добавить через usbd_app_driver_get_cb(). Стек хоста поддерживает CDC-ACM, vendor serial over USB (FTDI, CP210x, CH34x, PL2303), HID, MSC, MIDI и многоуровневые хабы. Пользовательские драйверы хоста добавляются через usbh_app_driver_get_cb(). Стек питания (PD3.0 с USB Type-C) находится на очень ранней стадии, только для тестирования и только на STM32 G4. Слой абстракции ОС помещает все события ISR в центральную очередь, обрабатываемую вне контекста ISR, используя семафоры/мьютексы для общих ресурсов. Поддерживаемые ОС: No OS, FreeRTOS, RT-Thread, Mynewt. Поддерживаемые CPU охватывают многих производителей: Allwinner, Analog, Artery AT32, Bridgetek, Broadcom, Dialog, Espressif, Geehy, GigaDevice, HPMicro, Infineon, MicroChip, MindMotion, NordicSemi, Nuvoton, NXP, Puya, Raspberry Pi, Renesas, Silabs, Sony, ST STM32, TI, ValentyUSB, WCH, с различной поддержкой режимов устройства, хоста и высокоскоростного. Бесплатно предоставляемые инструменты разработки включают IAR Build Tools, JetBrains CLion и статический анализатор PVS-Studio.