Skip to content

20260605_TinyUSB

Jaedeok Kim edited this page Jun 6, 2026 · 1 revision

개요

하드웨어에 tinyusb를 사용함 (이유 자세히는 추가 필요) 기존에 진행하던 프로젝트에 삽입하기 위해서 문서 참고함.

정리기준

해당 TinyUSB의 크기 최적화를 위해서 필요하지 않은 파일을 목적에 따라 삭제함

# 기본 형태
tinyusb/ (Root Directory)
├── class/           # USB 장치 클래스 드라이버 모음 (앞서 보신 audio, cdc, hid 등)
├── common/          # 프로젝트 전반에서 공통으로 사용하는 유틸리티 및 매크로
├── device/          # USB 디바이스(Peripheral) 모드 동작을 위한 코어 스택
├── host/            # USB 호스트 모드(마우스나 USB 메모리를 읽는 역할) 코어 스택
├── osal/            # OS Abstraction Layer (FreeRTOS, RT-Thread 등 OS 연동 인터페이스)
├── portable/        # MCU 제조사별 USB 하드웨어(IP) 제어용 로우레벨 드라이버 (DCD/HCD)
├── typec/           # USB Type-C 및 PD(Power Delivery) 관련 처리 코드
├── CMakeLists.txt   # CMake 빌드 시스템 설정 파일
├── tinyusb.mk       # Makefile 빌드 시스템 설정 파일
├── tusb.c           # TinyUSB 스택 초기화 및 메인 프로세스 처리 소스 코드
├── tusb.h           # 사용자가 프로젝트에 포함해야 하는 메인 헤더 파일
└── tusb_option.h    # TinyUSB의 각종 기능 활성화/비활성화를 위한 기본 옵션 헤더 파일

class

최소한의 usb class를 남겨두기 위해서 해당 아래의 내용을 정리함

class/
├── audio/        # 오디오 장치 (스피커, 마이크, 사운드 카드 등)
├── cdc/          # 통신 장치 (가상 시리얼 COM 포트, USB 모뎀)
├── dfu/          # 펌웨어 업데이트용 (Device Firmware Upgrade)
├── hid/          # 휴먼 인터페이스 장치 (키보드, 마우스, 조이스틱)
├── midi/         # 전자 악기 인터페이스 (MIDI 컨트롤러, 신디사이저)
├── msc/          # 대용량 저장 장치 (USB 메모리, 외장 하드, SD 카드 리더)
├── mtp/          # 미디어 전송 프로토콜 (스마트폰 파일 전송, 카메라)
├── net/          # 네트워크 가상 랜카드 (RNDIS, ECM 등)
├── printer/      # 프린터 및 출력 장치
├── usbtmc/       # 계측기 통신 규약 (오실로스코프, 멀티미터 등 전용)
├── vendor/       # 제조사 정의 커스텀 장치 (표준 규격 외 자체 통신)
└── video/        # 영상 입력 장치 (웹캠, UVC 비디오 캡처 보드)

따라서 필요한 기능에는 cdc, hid, dfu만 사용함으로 나머지는 필요없기 떄문에 정리함

host

키보드의 목적이 있는 프로젝트기 떄문에 host는 필요하지 않다.

osal

osal의 경우 사용 mcu가 stm32이므롱 osal_stm32와 존속성이 있는 osal_none를 제외한 나머지를 정리

Clone this wiki locally