Um sistema operacional de tempo real (RTOS) compatível com POSIX para dispositivos embarcados, escalável de microcontroladores de 8 a 64 bits.
hathach/tinyusb
Pilha USB open source multiplataforma de Host e Device para sistemas embarcados, projetada para oferecer segurança de memória e de threads em mais de 50 famílias de MCU.
- Estrelas
- 7,262
- Forks
- 1,577
- Issues abertas
- 417
- Último commit
- há 13 horas
O que é?
TinyUSB é uma pilha USB escrita em C para microcontroladores, com suporte aos modos Device e Host. Ela atende desenvolvedores de sistemas embarcados que precisam de conectividade USB em chips pequenos, sem um sistema operacional completo. A pilha não usa alocação dinâmica: trabalha apenas com buffers estáticos e adia todo o processamento de interrupções para funções de tarefa que não são ISR, podendo assim operar com segurança junto a um RTOS.
No lado Device, TinyUSB implementa várias classes, incluindo CDC serial, HID (teclado, mouse e gamepad), armazenamento em massa com várias LUNs, MIDI, áudio (UAC1/UAC2), impressora, redes (RNDIS, ECM, NCM) e WebUSB. O lado Host oferece suporte a CDC-ACM, várias famílias de chips USB para serial, HID, MSC, MIDI e hubs. Também é possível criar drivers de classe personalizados usando hooks de callback, sem modificar a pilha.
O repositório inclui exemplos compilados com make e CMake, uma camada de suporte a placas e uma tabela que lista quais famílias de MCU oferecem suporte a Device, Host e alta velocidade. Funciona com bare metal, FreeRTOS, RT-Thread e Mynewt.
Recursos principais
- 01Pilhas Device e Host em uma única base de código, com configuração dinâmica de descritores.
- 02Alocação estática de memória, sem alocação dinâmica em tempo de execução.
- 03Interrupções adiadas para o contexto de tarefa, garantindo segurança de threads com um RTOS.
- 04Suporte a várias classes Device, incluindo CDC, HID, MSC, MIDI, áudio e redes.
- 05Suporte Host a CDC-ACM, HID, MSC, MIDI e hubs de vários níveis.
- 06Portável entre mais de 50 famílias de MCU e compatível com bare metal, FreeRTOS e RT-Thread.
Casos de uso
- Adicionar um console serial USB ou uma porta CDC a um produto com microcontrolador.
- Criar um teclado, mouse ou gamepad USB com um MCU pequeno.
- Disponibilizar um cartão SD ou armazenamento flash para um PC como unidade USB de armazenamento em massa.
- Criar um controlador MIDI ou dispositivo de áudio USB em hardware embarcado.
Início rápido
- 1
Obtenha o código-fonte e leia o guia Getting Started
- 2
Compile o exemplo cdc_msc do diretório examples
- 3
Adicione o TinyUSB ao seu projeto seguindo o guia Getting Started
Antes de usar
- É voltado para MCUs embarcados, portanto não é uma biblioteca USB de uso geral para sistemas desktop ou móveis.
- O suporte varia conforme a família de MCU; consulte a tabela Supported CPUs para verificar a disponibilidade de host e de alta velocidade.
- A stack Power Delivery está em um estágio muito inicial e serve apenas para testes no STM32 G4.
Em coleções
Tópicos
Perguntas frequentes
- O que é tinyusb?
- Pilha USB open source multiplataforma de Host e Device para sistemas embarcados, projetada para oferecer segurança de memória e de threads em mais de 50 famílias de MCU. TinyUSB é uma pilha USB escrita em C para microcontroladores, com suporte aos modos Device e Host. Ela atende desenvolvedores de sistemas embarcados que precisam de conectividade USB em chips pequenos, sem um sistema operacional completo. A pilha não usa alocação dinâmica: trabalha apenas com buffers estáticos e adia todo o processamento de interrupções para funções de tarefa que não são ISR, podendo assim operar com segurança junto a um RTOS.
- tinyusb é gratuito? Qual é a licença?
- tinyusb é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- tinyusb ainda é mantido?
- Manutenção ativa. O último commit de tinyusb foi em 6 de nov. de 2026.
- Para que posso usar tinyusb?
- Adicionar um console serial USB ou uma porta CDC a um produto com microcontrolador. Criar um teclado, mouse ou gamepad USB com um MCU pequeno. Disponibilizar um cartão SD ou armazenamento flash para um PC como unidade USB de armazenamento em massa. Criar um controlador MIDI ou dispositivo de áudio USB em hardware embarcado.
- Como instalar tinyusb?
- Obtenha o código-fonte e leia o guia Getting Started Compile o exemplo cdc_msc do diretório examples Adicione o TinyUSB ao seu projeto seguindo o guia Getting Started
- Onde consigo tinyusb?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/hathach/tinyusb
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Um sistema operacional de tempo real (RTOS) escalável para microcontroladores com recursos limitados e dispositivos IoT em diversas arquiteturas de CPU.
Uma implementação enxuta de Python 3 que roda em microcontroladores e outros dispositivos com recursos limitados, com módulos para acesso ao hardware.
Framework oficial de desenvolvimento da Espressif para criar firmware para ESP32 e outros SoCs da Espressif no Windows, Linux e macOS.
Ferramenta de linha de comando multiplataforma e sistema de build para desenvolvimento embarcado, com gerenciamento de bibliotecas, suporte a várias placas e frameworks, depuração e testes unitários.
Uma caixa de ferramentas para criar aplicações embarcadas em Zig, com uma camada de abstração de hardware e suporte a placas e chips.