8ビットから64ビットのマイクロコントローラーまで対応する、POSIX準拠の組み込みデバイス向けリアルタイムOS(RTOS)。
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
ソースコードを取得し、「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の両方の役割に対応しています。フル機能の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 の数値は毎日更新されます。
関連プロジェクト
多様なCPUアーキテクチャに対応し、リソースに制約のあるマイクロコントローラーやIoTデバイス向けに設計された、拡張性の高いリアルタイムOS(RTOS)。
マイクロコントローラーなどのリソースが限られたデバイスで動作し、ハードウェアアクセス用モジュールを備えた軽量なPython 3実装。
Windows、Linux、macOSでESP32などEspressif製SoC向けファームウェアを開発するための公式フレームワーク。
組み込み開発向けのクロスプラットフォームなコマンドラインツール兼ビルドシステム。ライブラリ管理、複数のボードやフレームワーク、デバッグ、ユニットテストに対応します。
ハードウェア抽象化レイヤーとボード・チップのサポートを備えた、Zigで組み込みアプリケーションを開発するためのツールボックス。