Howto

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

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