-
Notifications
You must be signed in to change notification settings - Fork 0
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의 각종 기능 활성화/비활성화를 위한 기본 옵션 헤더 파일
최소한의 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는 필요하지 않다.
osal의 경우 사용 mcu가 stm32이므롱 osal_stm32와 존속성이 있는 osal_none를 제외한 나머지를 정리