最終更新:2023-07-14 (金) 15:49:12 (288d)  

Linux/USBガジェット
Top / Linux / USBガジェット

ドキュメント

kernel.org

Linux USB gadget configured through configfs

その他

Linux/USBガジェット/対応機種

スライド

メモ

  • only one function at a time is accessible via USB.
  • The USB gadget framework supports only a single controller at a time.

Linux/USBガジェット/API

  • 独自デバイスを動かすためのAPI

Linux/USBガジェット/configfs

FunctionFS

  • GadgetFSと同じ使い方
  • 既存のモジュールと同時利用が可能になった
  • Linux 2.6.35~ (2010/08/01)

GadgetFS

Linux/USBガジェット/フレームワーク

  • ガジェットドライバが実装されているフレームワーク

Linux/USBガジェット/歴史

USBホスト機能との比較

共通点

  • 使う構造体とか

違い

Linux/USBガジェット/構造体

usb_gadget - デバイス自体

usb_gadget_driver - デバイスの機能の管理

  • driver for usb 'slave' devices

usb_ep - ハードウェアの管理

  • device side representation of USB endpoint

usb_request - 転送の管理

  • holds essential information for transfers.

構成

  • 3つのレイヤからなる。

Linux/USBコントローラドライバ

  • The <linux/usb/gadget.h> API abstracts the peripheral controller endpoint hardware.
  • レジスタ、FIFO,DMA,割り込みの処理を行う。
  • 構造体
    • endpoint?
  • コールバックを通してガジェットドライバとやりとりをする。
  • USBコントローラ

コントローラのHAL

Linux/USBガジェットドライバ

アプリケーション層

関連するサブシステム

USB/エニュメレーション

ドライバ

ソースコード

linux/usb/gadget.h - Core Objects and Methods

linux/usb/ch9.h

  • usb_speed_string?
  • usb_state_string?

linux/usb/composite.h - Composite Device Framework

drivers/usb/gadget

Composite Device Functions

  • drivers/usb/gadget/f_acm.c?
  • drivers/usb/gadget/f_ecm.c?
  • drivers/usb/gadget/f_subset.c?
  • drivers/usb/gadget/f_obex.c?
  • drivers/usb/gadget/f_serial.c?

ライフサイクル

  • デバイスコントローラにドライバを登録
  • ガジェットドライバをバインド
  • エニュメレーション
  • ディスクリプタを返す
  • 通信
  • アンバインド

Linux/USBガジェット/モジュール

GadgetFS

Linux/USBガジェット/マスストレージ

Linux/USBガジェット/UAC

Linux/HID

ODROID-X2

ODROID Magazine

  • 2月号

OMAP5432 EVM

Android

参考