Repolode
hathach

hathach/tinyusb

50以上のMCUファミリーに対応し、メモリ安全性とスレッド安全性を重視して設計された、組み込みシステム向けのクロスプラットフォームなオープンソースUSB Host/Deviceスタックです。

スター
7,262
フォーク
1,577
未解決の Issue
417
最終コミット
24 時間前

これは何?

TinyUSBは、マイクロコントローラー向けにCで書かれたUSBスタックで、DeviceとHostの両方の役割に対応しています。フル機能のOSを搭載しない小規模なチップにUSB接続を追加したい組み込み開発者を対象としています。動的メモリ確保を避け、静的バッファのみを使用します。また、割り込み処理をすべてISR外のタスク関数に委ねるため、RTOSと並行して安全に動作できます。

Device側では、CDCシリアル、HID(キーボード、マウス、ゲームパッド)、複数LUN対応のマスストレージ、MIDI、オーディオ(UAC1/UAC2)、プリンター、ネットワーク(RNDIS、ECM、NCM)、WebUSBなど、幅広いクラスを実装しています。Host側はCDC-ACM、複数のUSB-シリアル変換チップファミリー、HID、MSC、MIDI、ハブに対応しています。コールバックフックを使えば、スタックを変更せずに独自のクラスドライバーを作成することもできます。

リポジトリには、makeとCMakeでビルドできるサンプル、ボードサポート層、各MCUファミリーのDevice、Host、高速通信への対応状況をまとめた一覧が含まれています。ベアメタル、FreeRTOS、RT-Thread、Mynewtで動作します。

主な機能

  • 01動的なディスクリプター設定に対応したDevice/Hostスタックを、1つのコードベースで提供。
  • 02実行時の動的メモリ確保を行わず、静的メモリのみを使用。
  • 03割り込み処理をタスクコンテキストに委ね、RTOS環境でのスレッド安全性を確保。
  • 04CDC、HID、MSC、MIDI、オーディオ、ネットワークなど、多数のDeviceクラスに対応。
  • 05CDC-ACM、HID、MSC、MIDI、複数階層のハブに対応するHost機能。
  • 0650以上のMCUファミリーに移植可能で、ベアメタル、FreeRTOS、RT-Threadで動作。

ユースケース

  • マイクロコントローラー製品にUSBシリアルコンソールやCDCポートを追加する。
  • 小型MCUでUSBキーボード、マウス、ゲームパッドを作成する。
  • SDカードやフラッシュストレージを、USBマスストレージドライブとしてPCに公開する。
  • 組み込みハードウェアで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の両方の役割に対応しています。フル機能のOSを搭載しない小規模なチップにUSB接続を追加したい組み込み開発者を対象としています。動的メモリ確保を避け、静的バッファのみを使用します。また、割り込み処理をすべてISR外のタスク関数に委ねるため、RTOSと並行して安全に動作できます。
tinyusb は無料で使えますか?ライセンスは?
tinyusb は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
tinyusb は今もメンテナンスされていますか?
活発にメンテナンス中。tinyusb の最終コミットは 2026年11月6日 です。
tinyusb は何に使えますか?
マイクロコントローラー製品にUSBシリアルコンソールやCDCポートを追加する。 小型MCUでUSBキーボード、マウス、ゲームパッドを作成する。 SDカードやフラッシュストレージを、USBマスストレージドライブとしてPCに公開する。 組み込みハードウェアでUSB MIDIコントローラーやオーディオデバイスを開発する。
tinyusb のインストール方法は?
ソースコードを取得し、「Getting Started」ガイドを読みます examples ディレクトリから cdc_msc の例をビルドします 「Getting Started」ガイドに従って、TinyUSB をプロジェクトに追加します
tinyusb はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/hathach/tinyusb

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト