Repolode
hathach

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. 1

    Получите исходный код и прочитайте руководство Getting Started

  2. 2

    Соберите пример cdc_msc из каталога examples

  3. 3

    Добавьте TinyUSB в свой проект, следуя руководству Getting Started

Что важно знать

  • Библиотека предназначена для встроенных MCU, поэтому она не является USB-библиотекой общего назначения для настольных или мобильных систем.
  • Поддержка зависит от семейства MCU; сведения о поддержке режима хоста и высокой скорости смотрите в таблице Supported CPUs.
  • Стек Power Delivery находится на самой ранней стадии разработки и предназначен только для тестирования на STM32 G4.

В подборках

Темы

#usb#embedded#microcontroller#usb-device#usb-host#rtos#firmware#midi#msc#tinyusb

Частые вопросы

Что такое 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 обновляется ежедневно.

Похожие проекты

Масштабируемая операционная система реального времени (RTOS) для микроконтроллеров с ограниченными ресурсами и IoT-устройств на множестве архитектур CPU.

17 тыс.+47 за неделю10,4 тыс.CApache-2.0Обновлён 19 часов назад

Кроссплатформенный инструмент командной строки и система сборки для разработки встраиваемого ПО: управление библиотеками, поддержка разных плат и фреймворков, отладка и модульное тестирование.

9,6 тыс.+8 за неделю917PythonApache-2.0Активно поддерживаетсяОбновлён 21 день назад

GitHub Action и Python CLI для отслеживания использования flash и RAM в прошивках по ELF-файлам и публикации изменений в памяти в комментариях к pull request.

502PythonGPL-3.0Активно поддерживаетсяОбновлён позавчера