Repolode
hathach

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

    소스 코드를 가져와 Getting Started 가이드를 읽으세요

  2. 2

    examples 디렉터리에서 cdc_msc 예제를 빌드하세요

  3. 3

    Getting Started 가이드에 따라 프로젝트에 TinyUSB를 추가하세요

사용 전 알아둘 점

  • 임베디드 MCU를 대상으로 하므로 데스크톱이나 모바일 시스템용 범용 USB 라이브러리가 아닙니다.
  • MCU 제품군에 따라 지원 여부가 다릅니다. 호스트 및 고속 통신 지원 여부는 Supported CPUs 표를 확인하세요.
  • Power Delivery 스택은 개발 초기 단계이며 STM32 G4에서 테스트하는 용도로만 제공됩니다.

포함된 컬렉션

토픽

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

자주 묻는 질문

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 통계는 매일 갱신됩니다.

관련 프로젝트