警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : Armadillo-800 EVAをUVCカメラとして使用する

対象製品: Armadillo-800 EVA

Armadillo-800 EVA を Debian GNU/Linux で起動し、UVCカメラとして使用する方法を説明します。UVCカメラが出力する画像は、Armadillo-800 EVA に標準搭載されたカメラから取得します。

Armadillo-800 EVA を UVCカメラとして使用するためには、USBデバイスの Web カメラ機能を使用します。Web カメラ機能を使用するために必要な UVCガジェットサンプルアプリケーションは以下のとおりです。

ソースアーカイブuvc-gadget.tar.gz
実行ファイルuvc-gadget

本Howtoで動作確認を行った作業用PCの環境は次のとおりです。

OSWindows 7 Professional Service Pack 1
VMwareVMware Workstation 7.1.5
ATDE4(amd64向け VMware仮想イメージファイル)atde4-20111228-amd64.zip

1. 準備

Armadillo-800 EVA を UVCカメラとして使用するための準備を行います。

1.1. USBデバイス機能の使用準備

Howto: Armadillo-800 EVAのUSBデバイス機能を使用する」を参照し、以下の手順を実行してください。

USBガジェットカーネルモジュールは、Webカメラ機能を持つ "g_armadillo.ko" を使用します。

"g_webcam.ko" も Web カメラ機能を持っていますが、本Howtoで使用する UVCガジェットサンプルアプリケーションは "g_armadillo.ko" 専用に作成されているため動作させることができません。

1.2. UVCガジェットサンプルアプリケーションの実行ファイルを作成

UVCガジェットサンプルアプリケーションの実行ファイルを作成します。このアプリケーションは、カメラから取得した画像の出力および、作業用PCから送信される各種イベントの処理を行います。

はじめに、ソースアーカイブを展開します。ビルドを行うためには Linux カーネルソースが必要です。


[atde ~]$ ls
linux-2.6.35-a800eva-at2  linux-2.6.35-a800eva-at2.tar.gz  uvc-gadget.tar.gz
[atde ~]$ tar zxvf uvc-gadget.tar.gz
[atde ~]$ cd uvc-gadget

ビルドを実行し、実行ファイルを作成します。シェル変数 "KERNEL_DIR" には、Linux カーネルソースディレクトリを指定します。


[atde ~/uvc-gadget]$ CROSS_COMPILE=arm-linux-gnueabi- \
KERNEL_DIR=../linux-2.6.35-a800eva-at2 ARCH=arm make
[atde ~/uvc-gadget]$ ls uvc-gadget
uvc-gadget

1.3. カーネルモジュールの登録とサンプルアプリケーションの起動

USBガジェットカーネルモジュールの登録と、UVCガジェットサンプルアプリケーションの起動を行います。

はじめに、insmodコマンドで "g_armadillo.ko" を登録します。


[armadillo ~]# ls
g_armadillo.ko  uvc-gadget
[armadillo ~]# insmod g_armadillo.ko
g_armadillo gadget: using random self ethernet address
g_armadillo gadget: using random host ethernet address
usb0: MAC 46:24:2d:43:41:94
usb0: HOST MAC 5a:09:33:f5:c7:35
g_armadillo gadget: uvc_function_bind
g_armadillo gadget: Armadillo Composite Gadget, version: 2012/05/02
g_armadillo gadget: g_armadillo ready
g_armadillo gadget: high speed config #1: Armadillo Compo
site (CDC + ACM + UVC)
g_armadillo gadget: uvc_function_set_alt(0, 0)
g_armadillo gadget: uvc_function_set_alt(1, 0)
g_armadillo gadget: uvc_function_set_alt(1, 0)
[armadillo ~]#

次に、UVCガジェットサンプルアプリケーションを起動します。書式と有効なオプションは以下のとおりです。


書式: uvc-gadget [オプション]...
  -o device
         出力ビデオデバイスを指定します。デフォルトでは、
         /dev/video3(UVCガジェット)が指定されます。
  -c device
         入力ビデオデバイスを指定します。デフォルトでは、
         /dev/video0(CON1に搭載されたカメラ)が指定されます。
  -h
         使用方法メッセージを出力してプログラムを終了します。

実行権限を付与し、UVCガジェットサンプルアプリケーションを起動します。起動が完了すると、Armadillo-800 EVA が UVCカメラとして認識されます。


[armadillo ~]# chmod +x uvc-gadget
[armadillo ~]# ./uvc-gadget
sh_mobile_ceu sh_mobile_ceu.0: SuperH Mobile CEU driver attached to camera 0
USB speed unknown
g_armadillo gadget: uvc_function_disable
g_armadillo gadget: high speed config #1: Armadillo Composite (CDC + ACM + UVC)
g_armadillo gadget: uvc_function_set_alt(0, 0)
g_armadillo gadget: uvc_function_set_alt(1, 0)
g_armadillo gadget: uvc_function_set_alt(1, 0)

ATDE から Armadillo-800 EVA を認識できない場合は、ホストOSが先に認識している可能性があります。VMware製品のドキュメントを参照し、ATDE で認識できるよう設定してください。例として、「Workstation ユーザーマニュアル」を参照し、VMware Workstation 7.1.5で設定する例を記載します。

  1. VMware Workstationを起動する
  2. ATDEをパワーオンする
  3. メニューの「VM(M)」「取外し可能デバイス(R)」「Armadillo Composite Gadget」を選択する
  4. 「接続(ホストから切断)(C)」をクリックする
  5. ダイアログボックスが表示されるため「OK」をクリックする

2. 動作確認

ATDE で、UVCカメラ(Armadillo-800 EVA)から取得した画像を表示します。UVCビューアとして guvcview を使用します。

UVCカメラから出力される画像のフォーマットとサイズは以下のとおりです。

画像フォーマット 解像度(ピクセル)
NV12(4:2:0 Semi-Planer) 640x480

はじめに、guvcviewのインストールを行います。


[atde ~]$ sudo apt-get update
[atde ~]$ sudo apt-get install guvcview

NV12フォーマットで出力された画像を guvcview で表示するには、以下のようにコマンドを実行します。


[atde ~]$ guvcview -d /dev/video0 -f nv12