8비트부터 64비트 마이크로컨트롤러까지 지원하는 임베디드 기기용 POSIX 호환 실시간 운영체제(RTOS)입니다.
hathach/tinyusb
50개 이상의 MCU 제품군에서 메모리와 스레드 안전성을 고려해 설계된, 임베디드 시스템용 오픈소스 크로스 플랫폼 USB Host 및 Device 스택입니다.
- 스타
- 7,262
- 포크
- 1,577
- 열린 이슈
- 417
- 마지막 커밋
- 16시간 전
어떤 프로젝트인가요?
TinyUSB는 마이크로컨트롤러용으로 C로 작성된 USB 스택으로, Device와 Host 역할을 모두 지원합니다. 완전한 운영체제 없이 소형 칩에서 USB 연결이 필요한 임베디드 개발자를 대상으로 합니다. 동적 할당을 피하고 정적 버퍼만 사용하며, 모든 인터럽트 작업을 ISR이 아닌 태스크 함수에서 처리하므로 RTOS와 함께 안전하게 실행할 수 있습니다.
Device 측에서는 CDC serial, HID(키보드, 마우스, 게임패드), 여러 LUN을 지원하는 mass storage, MIDI, audio(UAC1/UAC2), printer, networking(RNDIS, ECM, NCM), WebUSB 등 다양한 클래스를 구현합니다. Host 측에서는 CDC-ACM, 여러 USB-to-serial 칩 제품군, HID, MSC, MIDI 및 허브를 지원합니다. 개발자는 스택을 수정하지 않고도 callback hook을 통해 사용자 정의 클래스 드라이버를 작성할 수 있습니다.
저장소에는 make와 CMake로 빌드하는 예제, 보드 지원 계층, 그리고 Device·Host·high-speed 기능을 제공하는 MCU 제품군을 정리한 지원 표가 포함되어 있습니다. bare metal, FreeRTOS, RT-Thread 및 Mynewt에서 동작합니다.
핵심 기능
- 01하나의 코드베이스에서 동적 descriptor 구성을 지원하는 Device 및 Host 스택을 제공합니다.
- 02런타임에 동적 할당을 하지 않고 정적 메모리 할당을 사용합니다.
- 03RTOS에서 스레드 안전성을 보장하도록 인터럽트를 태스크 컨텍스트에서 처리합니다.
- 04CDC, HID, MSC, MIDI, audio, networking 등 다양한 Device 클래스를 지원합니다.
- 05CDC-ACM, HID, MSC, MIDI 및 다단계 허브를 Host 측에서 지원합니다.
- 0650개 이상의 MCU 제품군에서 사용할 수 있으며 bare metal, FreeRTOS 또는 RT-Thread에서 동작합니다.
활용 사례
- 마이크로컨트롤러 제품에 USB serial 콘솔이나 CDC 포트를 추가합니다.
- 소형 MCU로 USB 키보드, 마우스 또는 게임패드를 만듭니다.
- SD 카드나 플래시 스토리지를 PC에서 USB mass storage 드라이브로 인식되게 합니다.
- 임베디드 하드웨어에서 USB MIDI 컨트롤러나 오디오 장치를 만듭니다.
빠른 시작
- 1
소스 코드를 가져와 Getting Started 가이드를 읽으세요
- 2
examples 디렉터리에서 cdc_msc 예제를 빌드하세요
- 3
Getting Started 가이드에 따라 프로젝트에 TinyUSB를 추가하세요
사용 전 알아둘 점
- 임베디드 MCU를 대상으로 하므로 데스크톱이나 모바일 시스템용 범용 USB 라이브러리가 아닙니다.
- MCU 제품군에 따라 지원 여부가 다릅니다. 호스트 및 고속 통신 지원 여부는 Supported CPUs 표를 확인하세요.
- Power Delivery 스택은 개발 초기 단계이며 STM32 G4에서 테스트하는 용도로만 제공됩니다.
포함된 컬렉션
토픽
자주 묻는 질문
- tinyusb은(는) 무엇인가요?
- 50개 이상의 MCU 제품군에서 메모리와 스레드 안전성을 고려해 설계된, 임베디드 시스템용 오픈소스 크로스 플랫폼 USB Host 및 Device 스택입니다. TinyUSB는 마이크로컨트롤러용으로 C로 작성된 USB 스택으로, Device와 Host 역할을 모두 지원합니다. 완전한 운영체제 없이 소형 칩에서 USB 연결이 필요한 임베디드 개발자를 대상으로 합니다. 동적 할당을 피하고 정적 버퍼만 사용하며, 모든 인터럽트 작업을 ISR이 아닌 태스크 함수에서 처리하므로 RTOS와 함께 안전하게 실행할 수 있습니다.
- tinyusb은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- tinyusb은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- tinyusb은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. tinyusb의 마지막 커밋은 2026년 11월 6일입니다.
- tinyusb은(는) 어디에 사용할 수 있나요?
- 마이크로컨트롤러 제품에 USB serial 콘솔이나 CDC 포트를 추가합니다. 소형 MCU로 USB 키보드, 마우스 또는 게임패드를 만듭니다. SD 카드나 플래시 스토리지를 PC에서 USB mass storage 드라이브로 인식되게 합니다. 임베디드 하드웨어에서 USB MIDI 컨트롤러나 오디오 장치를 만듭니다.
- tinyusb는 어떻게 설치하나요?
- 소스 코드를 가져와 Getting Started 가이드를 읽으세요 examples 디렉터리에서 cdc_msc 예제를 빌드하세요 Getting Started 가이드에 따라 프로젝트에 TinyUSB를 추가하세요
- tinyusb은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/hathach/tinyusb
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
다양한 CPU 아키텍처의 리소스 제약이 있는 마이크로컨트롤러와 IoT 기기를 위한 확장성 높은 실시간 운영체제(RTOS)입니다.
마이크로컨트롤러와 기타 리소스가 제한된 기기에서 실행되며 하드웨어 접근 모듈을 제공하는 경량 Python 3 구현체입니다.
Windows, Linux, macOS에서 ESP32 및 기타 Espressif SoC용 펌웨어를 개발하는 Espressif 공식 개발 프레임워크입니다.
임베디드 개발을 위한 크로스 플랫폼 CLI 도구이자 빌드 시스템으로, 라이브러리 관리, 다양한 보드와 프레임워크, 디버깅 및 단위 테스트를 지원합니다.
Zig로 임베디드 애플리케이션을 빌드하기 위한 툴박스로, HAL과 보드·칩 지원을 제공합니다.