2012年12月5日水曜日

mbedのUSBホストライブラリの作成

mbed用のUSBホストライブラリを作り直してみました。
まだまだ改良しなければならないらしいところはありますが,とりあえず動いているようなので公開します。

BaseUsbHost

UVCカメラにアイソクロナス転送、USBフラッシュメモリにバルク転送、マウスにインタラプト転送、
コントロール転送が使えます。USBハブが使えます。

実装での特徴としては、割り込みからのTDの通知にmbed-RTOSのqueueを使用。
ED,TD,ITD,HCCAの確保にposix_memalignを使用。
スレッドとは非同期に転送できるように、転送データのバッファはTD,ITDの末尾にも貼り付けれようにした。
アイソクロナス転送ではうまくいっているが、コントロール転送の連続コマンド送信はエラーになりやすいみたい。

使用例として以前のカラートラッキングのプログラムを動くようにしてみました。
UVCカメラはLogitechC270専用にしてコンフィグレーションディスクリプタを読み取るのを止めた。
SET_CONFIGURATION,SET_INTERFACE,UVCへのコントロールを送っいるだけです。

BaseUsbHost_example

下のキャプチャーはカメラからmbedにモーションJPEGをアイソクロナス転送したデータを
確認のためにパソコンのターミナルソフトで数値表示しているところです。
CCの行はITDのコントールのコンディションコード、
PSの行はITDの中のパケットステータスのコンディションコードの発生回数を表示しています。



(2012/12/4)
---

0 件のコメント: