弊社SVI-06をUVCで使用したいとのお客様からのリクエストによりFX3のサンプルファーム”USBVideoClass”をやってみたいと思います。
FX3のSDKはBeta4で行います。(1.0でも動作的に違いがなさそうなので)
まずはファイル構成です。FX3 SDK B4をインストールするとfirmwareフォルダの中にUVCフォルダが作成されます。
で、この中はというと、cyfxuvcinmemフォルダとmakefileがあります。
実際のソースはcyfxuvcinmemフォルダの中にあり、makefileはEclipseのビルド用ですね。
(Eclipseを使わないでもできるんだろうね)
で、cyfxuvcinmemフォルダの中はというと、以下の通りです。
DebugフォルダはEclipseでImportすると勝手にビルドが始まって作成されます。
Projectファイルが2つと、アセンブラが1つと、Cソースが4つと、ヘッダーが1つ、makefile、readme.txtとなっております。
readme.txtの先頭をちょっとコピペ。
USB VIDEO CLASS EXAMPLE
———————–
This example implements a USB video class (Webcam) device that streams
a set of four MJPEG frames repeatedly to the USB host. The MJPEG video
frames are stored in the memory of the FX3 device as constant data.
UVCのサンプルで4つのMotionJPEGのファイルを繰り返しホストへ転送するそうです。
MotionJPEGのファイルはメモリーに格納してあるそうです。
もう少し下を読むとアイソクロナスエンドポイントを使用するようです。
UVCプロトコルについては標準的なものをインプリできるそうです。
各ソースの説明は以下の通りです。
* cyfx_gcc_startup.S : FX3内蔵ARM9のスタートアップコードです。
* cyfxuvcinmem.h : UVCサンプル用のCヘッダーです。必要に応じて変更してくれと。
* cyfxuvcdscr.c : UVCのUSBディスクルプタを定義しています。VID、PIDなど定義しています。
* cyfxuvcvidframes.c : UVC Probeコントロールの定義データとMotionJPEGのフレームデータを定義しています。データファイルですね。
* cyfxtx.c : ThreadX RTOS ラッパー関数やユーティリティー管巣が入ってます。たぶん変更する必要なし。
* cyfxuvcinmem.c : メインソースですね、USBのスタンダートリクエスト処理をやったり、アイソクロナス転送をやったり、メインです。
変更するのは、cyfxuvcinmem.h、cyfxuvcinmem.c、cyfxuvcdscr.cぐらいでしょうか。
ちょっと記事が長くなったので休憩、続きをお楽しみに。