【コラム】

セカンド・オピニオン

308 USB 3.0の研究(35)

    大原雄介  [2009/10/29]

    このACK TPに対するレスポンスはPhoto01の様にまとめられる。基本的には珍しいものはなく、ごく普通の対応である。ただし見ての通り、エラー発生時にはそれぞれ対応する処理を行う必要がある関係で、次から説明するPacketがそれぞれ用意されることになる。

    Photo01: 全てがNoというのは、単なる正常な転送完了の通知となるから、これまた何もしなくて良い(というか、次の転送に掛かればいい)事になる。

    NRDY(Not Ready) TP(Photo02)

    Photo02: Universal Serial Bus 3.0 SpecificationのFigure 8-12から抜粋

    これはDevice→Hostでのみ使われるTPである。DeviceがOUT Endpointの場合、Data Packetを受け取るためのバッファが満杯の場合に、IN Endpointは逆に、ACK TPの返答としてData Packetを送り出す準備が整っていない場合にこれを送信する。フィールドのSubTypeにはNRDYが、Direction/Endpoint Number/Stream IDなどは直前に届いたACK TPと同じものが入る。

    ERDY(Endpoint Ready) TP(Photo03)

    Photo03: Universal Serial Bus 3.0 SpecificationのFigure 8-13から抜粋

    これはDevice→Hostに対して、Device側が送信または受信の準備が整った事を通知するTPである。一見ACK TPと同じ機能であるが、フィールドを比較するとRetry/Host Error/Seq Numberなどのフィールドが無い(ACK TPはHost→DeviceのPacketだから、Device→HostのERDY TPがこれを持たないのはある意味当然ではある)ほか、Number of Packetsの意味合いがやや異なる。DeviceがOUT Endpointの場合、その意味合いはACK TPと同じである。問題はIN Endpointの場合で、この場合はHostがTransactionを再開した場合にどれだけのデータパケットを受け取れるか、を示す形になる。要するにTransactionの再開にあたって、Device側が準備出来ている事を示すために使われるものだ。

    Status TP(Photo04)

    Photo04: Universal Serial Bus 3.0 SpecificationのFigure 8-14から抜粋

    これはHost→Deviceのみで使われるTPである。これはControl Endpointに対して、これからControl TransferのStatus stageを開始することを通知するTPである。ここまでちょっと説明してこなかったが、全てのEndpointはControl Endpointと呼ばれる機能を持っている(もっと正確に書けば、Control Endpoint単独で成立するものもあれば、Bulk Endpointとペアになっているものもあると言うべきであろう)。で、このStatus TPはControl Endpointに対するTPという形になる。フィールドの内容は概ねACK TPと同じであるが、ERDY同様Retry/Host Error/Seq Numberなどのフィールドは無い。

    Stall TP(Photo05)

    Photo05: Universal Serial Bus 3.0 SpecificationのFigure 8-15から抜粋

    これはDevice→Hostのみで使われるTPとなる。これは、

    ・EndpointがHalt状態にある
    ・Control Transferが不正状態になった

    事をHostに通知するために利用される。フィールドの内容はStatus TP同様である。

    Device Notification(Photo06)

    Photo06: Universal Serial Bus 3.0 SpecificationのFigure 8-16から抜粋

    これはDevice→Hostでのみ使われるもので、DeviceあるいはInterfaceの状態がHostからのリクエストとは非同期に変化した場合に、それを通知するものとなる。例えばDeviceが独自の待機状態に入ったとか、逆に待機状態から抜けたといったケースである。といっても、基本的にはこのTPでは電源状態の変化の通知を行うのが主であり、Device Specificな情報を送ることは考慮していない。

    フィールドを見ると、SubTypeにはDEV_NOTICICATIONが入り、続くNotification Typeは、

    ・FUNCTION_WAKE
    ・LATENCY_TORELANCE_MESSAGE
    ・BUS_INTERVAL_ADJUSTMENT_MESSAGE

    の3種類のみが用意される。続くNotification Type Specificのフィールドであるが、これはNotification Typeによって当然異なる。FUNCTION_WAKEの場合、Photo07の様にごくシンプルである。要するにWakeupしたわけだから、それを通知すれば済む。

    Photo07:Universal Serial Bus 3.0 SpecificationのFigure 8-16から抜粋

    (続く)

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

        新着記事

        特別企画

        マイナビニュースマガジン