Linux的USB活用法

Linuxコーナ
Linux 的 USB 活用法
組み込みだとほしくなる! ほかの OS にはないしくみ標準装備
後編:LinuxボードをUSBアダプタに! ガジェット・ドライバ
永尾 裕樹,三木 昭一郎
Linuxカーネル
USBガジェット・
フレームワーク
● USB デバイス用ドライバが簡単に作成できる!
Linux カーネル標準装備「ガジェット・フレー
ムワーク」
ユーザ・アプリ
マス・ストレージ・
クラス・ドライバ
CDC-ACM
クラス・ドライバ
ガジェット・ドライバ
B社ペリフェラル・
コントローラ・
ドライバ
A社ペリフェラル・
コントローラ・
ドライバ
各種用意されている
USB
ホスト・ドライバ
プロセッサ/SoCなど
A社USB
ペリフェラル・
コントローラIC/IP
パソコン
● Windows や他の組み込み OS だとこう簡単に
はいかない
他 の 組 み 込 み OS で は,Windows Embedded
Compact 系が USB ペリフェラル機能注 1 を限定的にサ
Linux
ボード
USB
初期の USB ガジェット・フレームワークでは,ペ
リフェラル・コントローラは NetChip2280(USB ペリ
フェラル・コントローラ)のみ,クラス機能も CDC ク
ラスなど一部機能のみにしか対応できていませんでし
た.現在では,数十種類のペリフェラル・コントロー
ラ,クラス・ドライバが標準カーネルに含まれてお
り,コンフィグレーションで自由に選択して,使用す
ることができます.
コントローラ・ドライバとクラス・ドライバは,基
本的に自由に組み合わせることができます.
図 1 Linux ボードは USB デバイスにもなれる…USB デバイス・
ドライバ作成のしくみ「ガジェット・フレームワーク」
Linux はいろいろな USB デバイス・クラスやコントローラ IC/IP に対応し
た USB ドライバを簡単に作成できるようになっている.Windows だとそ
んなに簡単じゃない.カーネル・バージョン 2.4.23 から対応
● 組み込み OS では USB デバイス機能がほしく
なる
PC 用 OS として設計された Linux は,2000 年代前半
から急速に組み込み機器への採用が進みました.これ
らの組み込み機器用 ASIC/ASSP には USB ペリフェラ
ル機能が搭載されていることが多かった背景から,
カーネル・バージョン 2.4.23 から USB デバイス・クラ
ス 用ド ライバ を 簡 単 に 作 成 できる USB ガ ジ ェット
(Gadget)フレームワークの実装が始まりました(図 1)
.
ポートしています.それ以外は,サードパーティの有
償 USB ミドルウェアとしてのみ提供されています.
Linux 以外に USB ペリフェラル機能を広範囲に標準サ
ポートする OS はなく,組み込み用途では非常に便利
です.
本稿では,この Linux の USB ガジェット・フレー
ムワークのしくみを解説し,USB 3.0 ペリフェラル・
コントローラを例に,新しいペリフェラル・コント
ローラに対応してみます.
USB ガジェット・フレームワーク
● ソフトウェア構成
Linux に標準装備されている USB ガジェット・フ
レームワークは,前回(2014 年 12 月号 pp114-123)作
成方法を紹介した USB ホスト・ドライバと同様に図 2
のような 3 階層のソフトウェア構成になっています.
注 1:本稿では USB デバイス機能のことを USB ペリフェラル機
能と記す.
2015 年 1 月号
前編 Linux の USB ホスト・ドライバ作り(2014 年 12 月号)
133