Sistema operativo en tiempo real (RTOS) compatible con POSIX para dispositivos integrados, escalable desde microcontroladores de 8 hasta 64 bits.
hathach/tinyusb
Stack USB Host y Device de código abierto y multiplataforma para sistemas embebidos, diseñado para ofrecer seguridad de memoria e hilos en más de 50 familias de MCU.
- Estrellas
- 7,262
- Forks
- 1,580
- Issues abiertos
- 417
- Último commit
- hace 52 minutos
¿Qué es?
TinyUSB es un stack USB escrito en C para microcontroladores que admite los roles Device y Host. Está dirigido a desarrolladores de sistemas embebidos que necesitan conectividad USB en chips pequeños sin un sistema operativo completo. El stack evita la asignación dinámica y solo usa buffers estáticos; además, aplaza todo el trabajo de las interrupciones a funciones de tarea que no se ejecutan en una ISR, para poder funcionar de forma segura junto con un RTOS.
En el lado Device, TinyUSB implementa una amplia variedad de clases, como CDC serial, HID (teclado, mouse y gamepad), almacenamiento masivo con varios LUN, MIDI, audio (UAC1/UAC2), impresora, redes (RNDIS, ECM, NCM) y WebUSB. El lado Host admite CDC-ACM, varias familias de chips USB a serial, HID, MSC, MIDI y hubs. Los desarrolladores también pueden escribir controladores de clase personalizados mediante hooks de callback, sin modificar el stack.
El repositorio incluye ejemplos que usan make y CMake, una capa de soporte para placas y una tabla que indica qué familias de MCU ofrecen capacidades Device, Host y de alta velocidad. Funciona sin sistema operativo, con FreeRTOS, RT-Thread y Mynewt.
Funciones clave
- 01Stacks Device y Host en una misma base de código, con configuración dinámica de descriptores.
- 02Asignación estática de memoria, sin asignación dinámica en tiempo de ejecución.
- 03Las interrupciones se aplazan al contexto de tarea para garantizar la seguridad de hilos con un RTOS.
- 04Admite muchas clases de dispositivo, como CDC, HID, MSC, MIDI, audio y redes.
- 05Compatibilidad Host con CDC-ACM, HID, MSC, MIDI y hubs en cascada.
- 06Portable entre más de 50 familias de MCU; funciona sin sistema operativo, con FreeRTOS o con RT-Thread.
Casos de uso
- Agregar una consola serie USB o un puerto CDC a un producto con microcontrolador.
- Crear un teclado, mouse o gamepad USB con un MCU pequeño.
- Exponer una tarjeta SD o un almacenamiento flash a una PC como unidad USB de almacenamiento masivo.
- Crear un controlador MIDI USB o un dispositivo de audio con hardware embebido.
Inicio rápido
- 1
Obtén el código fuente y lee la guía Getting Started
- 2
Compila el ejemplo cdc_msc del directorio examples
- 3
Añade TinyUSB a tu proyecto siguiendo la guía Getting Started
Antes de usarlo
- Está pensado para MCU integrados, por lo que no es una biblioteca USB de propósito general para sistemas de escritorio o móviles.
- La compatibilidad varía según la familia de MCU; consulta la tabla Supported CPUs para comprobar la disponibilidad del modo host y de alta velocidad.
- La pila Power Delivery está en una fase muy inicial y solo sirve para hacer pruebas en STM32 G4.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es tinyusb?
- Stack USB Host y Device de código abierto y multiplataforma para sistemas embebidos, diseñado para ofrecer seguridad de memoria e hilos en más de 50 familias de MCU. TinyUSB es un stack USB escrito en C para microcontroladores que admite los roles Device y Host. Está dirigido a desarrolladores de sistemas embebidos que necesitan conectividad USB en chips pequeños sin un sistema operativo completo. El stack evita la asignación dinámica y solo usa buffers estáticos; además, aplaza todo el trabajo de las interrupciones a funciones de tarea que no se ejecutan en una ISR, para poder funcionar de forma segura junto con un RTOS.
- ¿tinyusb es gratuito? ¿Qué licencia tiene?
- tinyusb es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿tinyusb sigue mantenido?
- Mantenimiento activo. El último commit de tinyusb fue el 7 nov 2026.
- ¿Para qué puedo usar tinyusb?
- Agregar una consola serie USB o un puerto CDC a un producto con microcontrolador. Crear un teclado, mouse o gamepad USB con un MCU pequeño. Exponer una tarjeta SD o un almacenamiento flash a una PC como unidad USB de almacenamiento masivo. Crear un controlador MIDI USB o un dispositivo de audio con hardware embebido.
- ¿Cómo se instala tinyusb?
- Obtén el código fuente y lee la guía Getting Started Compila el ejemplo cdc_msc del directorio examples Añade TinyUSB a tu proyecto siguiendo la guía Getting Started
- ¿Dónde consigo tinyusb?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/hathach/tinyusb
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Un sistema operativo en tiempo real (RTOS) escalable para microcontroladores con recursos limitados y dispositivos IoT de diversas arquitecturas de CPU.
Una implementación ligera de Python 3 para microcontroladores y otros dispositivos con recursos limitados, con módulos para acceder al hardware.
Framework oficial de desarrollo de Espressif para crear firmware para ESP32 y otros SoC de Espressif en Windows, Linux y macOS.
Herramienta de línea de comandos y sistema de compilación multiplataforma para desarrollo embebido, con gestión de bibliotecas, compatibilidad con varias placas y frameworks, depuración y pruebas unitarias.
Caja de herramientas para crear aplicaciones embebidas en Zig, con una capa de abstracción de hardware y soporte para placas y chips.