1 OTGとは
USB On-the-Go(以下OTG)は、USB IF(Implementers Forum、USBの規格制定団体)が2001年12月に、USB2.0の追加仕様として定めた規格です。基本的にUSBはPCとその周辺機器をつなぐためにスタートした通信規格で、親であるPCと子である周辺機器(マウスやキーボード、プリンタ、デジカメなど)が、HostとFunctionという形で明確に役割を分担していますが、周辺機器(USBデバイス)同士をつなぐために定められたのがOTGです。
2 PCが中心→PCレスへ
親側はたくさんの処理をし、いろいろな子とつながらなくてはなりません。逆に子側は親とさえつながればよくて、処理も少なくてすみます。これはもともと「PCが親で周辺機器が子」という、PCと周辺機器をつなぐための規格として誕生したことが大きく影響しています。
USBでは、ホストである親からしか通信を開始できないという決まりがあります。子(例えばデジカメ)は、「割り込み」という、親に対して接続や信号を通知することはできます。ケーブルをつないだ瞬間に「手を挙げる」わけです。これに対して親が「はいどうぞ」といって通信を始めるわけです。
USBは、このある種の制限のために非常に利便性がよく、結果的にUSBに対応した機器が非常に増えました。そうなると今度はPC抜きでUSB Function機器同士をつなげないか、という希望がでてきます。
例えばデジカメとプリンタとか、PDAとキーボードとか。携帯電話も最近はお尻のところにつなぐケーブルはUSBですので、携帯電話とプリンタとか、携帯電話同士というのもありますね。ところがこれらは親(PC)とつながることしか考えていない子に過ぎず、子同士の会話はできません。USBポートの形状も違い、USBケーブルは一方が大きなプラグ(Aプラグ)で親につながり、もう一方が小さなプラグ(Bプラグ)で子とつながります。子同士ではそもそもケーブルがささりません。
前置きが長くなりましたが、これをできるようにと検討されたのがOTGという規格です。
3 デュアルロールデバイスとは
周辺機器同士をつなぐといっても、「USBは必ず片方が親でもう一方が子」という原則を崩すわけにはいきません。そうなると、OTGでは、「両方が親にも子にもなる」という規格になるわけです。この場合、考えられるのが、図1のような場合です。
図の中心にあるデジカメは、PCとつながるときは子となり、プリンタとつながるときは親となります。ただし、この場合はデジカメに2つの差込み口を用意しておくことと何も違いません。次に図2を見てみましょう。
この場合、デジカメ同士ということもあり、両者が対等な立場にあります。これこそがOTG規格が目標とする使い方で、「両方が親にも子にもなる」という形です。これを「デュアルロールデバイス」といいます。
図1のような使い方は、「デュアルロール」ではないため、OTG規格には適合していません。
4 OTG準拠の製品ってあるの?
最近では組込み用のホストコントローラでもOTGをサポートするものが数多く出ています。
Philips社、Oxford Semiconductor社、Cypress社といった海外勢から、セイコーエプソン、沖電気、ルネサステクノロジなどの日本勢、携帯電話用の1チップマイコンにも、H/WとしてはOTGの機能が組み込まれているものが多いとも言われています。
当社もOTGの規格が出たときにはすでに組込み用のUSBホストドライバを販売していましたが、PCレスの世界でのUSB通信の用途が広がっている象徴と強く感じました。特に説明してきませんでしたが、OTGは実は組込み機器や携帯機器を想定して、消費電力を抑えたり、コネクタのサイズを小さくしたり、といった仕様も盛り込まれていて、われわれの「組込み向けUSBホストドライバ」の方向性に大いに意を強くしたものです。
OTG対応のソフトウェアなども開発し、販売を開始したのですが、当時はOTGというと最初に説明した図1のケースを想定する人がほとんどで、デュアルロールデバイスの概念が浸透しませんでした。結果として、いまでも、OTGのロゴをとったデュアルロールデバイスはソニーのCLIEなど少数にとどまっています。
賢明な方はとっくに気づいているかもしれませんが、デュアルロールデバイスになりそうな機器というのは、PDA同士や携帯電話同士など、あまり多くありせん。デジカメとプリンタが両方ともOTGであれば、どっちが親でもいいのですが、それくらいならどっちかを親に決めてしまったほうがややこしくないのです。
PictBridgeというデジカメとプリンタのダイレクト接続の規格がありますが、これは完全に「プリンタがホストであって、OTGのデュアルロールデバイス機能は使わない」と明記しています。
そんなわけでOTG規格は決して十分広まっているとは言えませんが、USBの組込み機器への可能性を提示したという意味では大きな役割を果たしたと思います。デュアルロールが広まるかどうかはちょっとよくわかりませんが、小さいコネクタや省電力ホストなどの技術は今後も進化しながら使われていくでしょう。
今回のここだけは押さえたい!
OTGって広まるの?
- デュアルロールに対応しなくてはOTG対応とは言えないため、アプリケーションが限られる。
- ただし、省電力やミニプラグの提案など、PCレスでのUSB利用の礎を築いた意義は大きい。
※OTG補足:デュアルロールデバイスに関する説明
デュアルロールデバイス同士をOTGでつないだときに何がおきるかを考えてみます。
USBのケーブルは必ず大きなプラグ(Aプラグ)と小さなプラグ(Bプラグ)を両端にもっています。通常のUSBでは、プラグの大きさと形が違うため、PCとデジカメをつなぐような場合はケーブルのA側をAの口(PC)へ、ケーブルのB側をBの口(デジカメ)へというつなぎ方しかできません。
これに対しOTGの場合には、このプラグがささる口(USBではレセプタクル=受容体=と呼びます)が、AもBも両方ささるようになっています(ABレセプタクルといいます)。
ここに、デュアルロールデバイスのデジカメが2台とUSBケーブルが1本あるとします。ケーブルの両端はそれぞれAプラグとBプラグですが、デジカメに対してどちらをどちらにさしてもいいことになります。Aプラグがささったデジカメは電気的に即座に「自分が親である」と認識でき、逆にBプラグがささったデジカメは、プラグを差し込まれた瞬間に自分が子であることを理解します。
デジカメ2台をつなげたとき、ケーブルのどちら側をどちらのデジカメにさすかは私達ユーザーの気まぐれにすぎませんが、つないだ瞬間に、デジカメ同士では、USB的な親と子は一旦確立します。これは通常のUSBとまったく同じです。ではなぜOTGとかデュアルロールデバイスなどという規格があるのでしょうか。
最初の方に、「USBは必ず親からしか通信できない」と書いたのを覚えているでしょうか。親がPCの場合にはだいたいそれですむのですが、今回のデジカメ同士の場合は、基本的には対等な立場であるデジカメ同士において、「たまたま」子になってしまった方は親が通信してくれるのを待たなくてはなりません。または、ケーブルを逆向きにつなぎ変えて、自分が親にならなくてはなりません。
OTGの場合には、自分から通信を始めたい、つまり親になりたいのに子の位置に甘んじているデジカメは、「自分から通信を始めたい」と宣言し、「親になりたい」という交渉を現在の親に対して行うことができます。最初にケーブルをどのようにつないだかに関わらず、両方が代わる代わる親になってUSBの通信を行っていくことができるのがOTGなのです。つまり、OTGの目的は、「親と子の両方の機能をもつ」ことではなく、「USB機器同士が対等な立場で通信を行うことができる」ということです。その手段として、
- 親と子の両方の機能をもつ(ABレセプタクル)
- 子が通信を始めたいと宣言する(Session Request Protocol:SRP)
- 子が親になりたいと交渉する(Host Negotiation Protocol:HNP)
というのがOTGの特徴であり、これらすべてを実現できないと、「OTG対応機器」とは言えないことになっていて、USB OTGのロゴがとれません。
関連製品
-
- 第1回 組込みシステムのこれから
- 第2回 IoTの成功はセキュリティ次第
- 第3回 組込みでもGPUやFPGAと早めに親しんでおこう
- 第4回 電子産業の紅白歌合戦、CEATECで垣間見えた未来
- 第5回 小口開発案件の集合市場、IoTの歩き方(上)
- 第6回 小口開発案件の集合市場、IoTの歩き方(下)
- 第7回 徹底予習:AI時代の組込みシステム開発のお仕事
- 第8回 いまどきのセンサー(上):ありのままの状態を知る
- 第9回 いまどきのセンサー(下):データを賢く取捨選択する
- 第10回 組込みブロックチェーンの衝撃(上)
- 第11回 組込みブロックチェーンの衝撃(下)
- 第12回 エネルギーハーベスティングの使い所、使い方
- 第13回 「人を育てる」から「道具を育てる」へ、農業から学ぶAI有効活用法
- 第14回 CPS時代に組込みシステム開発に求められることとは
- 第15回 次世代車のE/Eアーキテクチャに見る組込みの進む道
- 第16回 RISC-Vが拓く専用プロセッサの時代
- 第17回 振動計測の大進化で、熟練エンジニアのスキルを広く身近に
-
- 零の巻:組込みというお仕事
- 壱の巻:2進数と16進数を覚えよう!
- 弐の巻:割り込みとポーリング
- 参の巻:printf()が使えない?
- 四の巻:これにもIntelが入ってるの?
- 五の巻:Endianってなに?
- 六の巻:マルチタスクとは
- 七の巻:スタックってなあに?(1)
- 七の巻:スタックってなあに?(2)
- 八の巻:メモリを壊してみましょう
- 九の巻:コードが消える?~最適化の罠~
- 拾の巻:例外が発生しました
- 拾壱の巻:コードサイズを聞かれたら
- 拾弐の巻:キャッシュは諸刃の剣
- 拾参の巻:デバイスにアクセスするには
- 拾四の巻:セキュリティってなに?(1)
- 拾四の巻:セキュリティってなに?(2)
- 拾四の巻:セキュリティってなに?(3)
- 拾五の巻 :DMA対応と言われたら(1)
- 拾五の巻 :DMA対応と言われたら(2)
- 拾六の巻:ヒープとスタック
- 拾七の巻:フラグメンテーション
- 拾八の巻:CPU起動とブートローダ
- 拾九の巻:kmとKByteの「kとK」
- ビリーへの質問:DMAとキャッシュの関係
- ビリーへの質問:スタックオーバーフローについて
- ビリーへの質問:CPUレジスタについて