Масштабируемая операционная система реального времени (RTOS) для микроконтроллеров с ограниченными ресурсами и IoT-устройств на множестве архитектур CPU.
hathach/tinyusb
Кроссплатформенный USB Host- и Device-стек с открытым исходным кодом для встраиваемых систем: безопасная работа с памятью и потоками, поддержка более 50 семейств MCU.
- Звёзды
- 7,258
- Форки
- 1,574
- Открытые issues
- 417
- Последний коммит
- 19 часов назад
Что это?
TinyUSB — написанный на C USB-стек для микроконтроллеров, поддерживающий роли Device и Host. Он рассчитан на разработчиков встраиваемых систем, которым нужно подключение по USB на компактных чипах без полноценной операционной системы. Стек не использует динамическое выделение памяти, а работает только со статическими буферами. Вся обработка прерываний передаётся обычным задачам вне контекста ISR, благодаря чему стек может безопасно работать вместе с RTOS.
На стороне Device TinyUSB реализует широкий набор классов: CDC serial, HID (клавиатура, мышь, геймпад), mass storage с несколькими LUN, MIDI, audio (UAC1/UAC2), принтер, сетевые протоколы (RNDIS, ECM, NCM) и WebUSB. На стороне Host поддерживаются CDC-ACM, несколько семейств USB-to-serial-чипов, HID, MSC, MIDI и USB-хабы. Разработчики также могут создавать собственные драйверы классов с помощью callback-хуков, не меняя сам стек.
В репозитории есть примеры сборки с make и CMake, слой поддержки плат и таблица поддерживаемых семейств MCU с указанием возможностей Device, Host и High-Speed. Стек работает на bare metal, FreeRTOS, RT-Thread и Mynewt.
Ключевые возможности
- 01Стек Device и Host в одной кодовой базе с динамической настройкой дескрипторов.
- 02Статическое выделение памяти без динамических аллокаций во время работы.
- 03Прерывания обрабатываются в контексте задач, что обеспечивает потокобезопасность при работе с RTOS.
- 04Поддержка множества классов устройств, включая CDC, HID, MSC, MIDI, audio и сетевые протоколы.
- 05Поддержка Host для CDC-ACM, HID, MSC, MIDI и многоуровневых USB-хабов.
- 06Работает более чем с 50 семействами MCU, на bare metal, FreeRTOS и RT-Thread.
Сценарии использования
- Добавление USB-консоли или CDC-порта к устройству на микроконтроллере.
- Создание USB-клавиатуры, мыши или геймпада на компактном MCU.
- Подключение SD-карты или flash-накопителя к ПК как USB mass storage.
- Создание MIDI-контроллера или аудиоустройства на встраиваемом оборудовании.
Быстрый старт
- 1
Получите исходный код и прочитайте руководство Getting Started
- 2
Соберите пример cdc_msc из каталога examples
- 3
Добавьте TinyUSB в свой проект, следуя руководству Getting Started
Что важно знать
- Библиотека предназначена для встроенных MCU, поэтому она не является USB-библиотекой общего назначения для настольных или мобильных систем.
- Поддержка зависит от семейства MCU; сведения о поддержке режима хоста и высокой скорости смотрите в таблице Supported CPUs.
- Стек Power Delivery находится на самой ранней стадии разработки и предназначен только для тестирования на STM32 G4.
В подборках
Темы
Частые вопросы
- Что такое tinyusb?
- Кроссплатформенный USB Host- и Device-стек с открытым исходным кодом для встраиваемых систем: безопасная работа с памятью и потоками, поддержка более 50 семейств MCU. TinyUSB — написанный на C USB-стек для микроконтроллеров, поддерживающий роли Device и Host. Он рассчитан на разработчиков встраиваемых систем, которым нужно подключение по USB на компактных чипах без полноценной операционной системы. Стек не использует динамическое выделение памяти, а работает только со статическими буферами. Вся обработка прерываний передаётся обычным задачам вне контекста ISR, благодаря чему стек может безопасно работать вместе с RTOS.
- tinyusb можно использовать бесплатно? Какая у него лицензия?
- tinyusb распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- tinyusb всё ещё поддерживается?
- Активно поддерживается. Последний коммит в tinyusb — 5 нояб. 2026 г..
- Для чего можно использовать tinyusb?
- Добавление USB-консоли или CDC-порта к устройству на микроконтроллере. Создание USB-клавиатуры, мыши или геймпада на компактном MCU. Подключение SD-карты или flash-накопителя к ПК как USB mass storage. Создание MIDI-контроллера или аудиоустройства на встраиваемом оборудовании.
- Как установить tinyusb?
- Получите исходный код и прочитайте руководство Getting Started Соберите пример cdc_msc из каталога examples Добавьте TinyUSB в свой проект, следуя руководству Getting Started
- Где скачать tinyusb?
- Исходный код и инструкции по установке — на GitHub: https://github.com/hathach/tinyusb
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Компактная реализация Python 3 для микроконтроллеров и других устройств с ограниченными ресурсами, с модулями для работы с аппаратурой.
Кроссплатформенный инструмент командной строки и система сборки для разработки встраиваемого ПО: управление библиотеками, поддержка разных плат и фреймворков, отладка и модульное тестирование.
Набор инструментов для разработки встроенных приложений на Zig с уровнем аппаратной абстракции и поддержкой плат и микроконтроллеров.
Плата с открытым исходным кодом заменяет плату в классических часах Casio F-91W и позволяет запускать собственные программы прямо на запястье.
GitHub Action и Python CLI для отслеживания использования flash и RAM в прошивках по ELF-файлам и публикации изменений в памяти в комментариях к pull request.