以前書いたブログ[*1]を元に、今度はAtmarkDistにて動作させてみました。
[*1] https://users.atmark-techno.com/blog/750/2572
1. サンプルアプリのビルド
今回はまず、ATDE5上でサンプルアプリをビルドします。 そのために、一度SDK内に含まれるヘッダファイルやライブラリをATDE5にコピーします。
1.1 SDKを一度任意のフォルダにコピーした後、展開
atmark@atde5:~$ mkdir ueye_sdk atmark@atde5:~$ cd ueye_sdk/ atmark@atde5:~/ueye_sdk$ ls uEyeSDK-4.81.00-ARM_LINUX_IDS_GNUEABI_HF.tgz atmark@atde5:~/ueye_sdk$ tar zxvf uEyeSDK-4.81.00-ARM_LINUX_IDS_GNUEABI_HF.tgz -C .
1.2 SDK内のヘッダファイルをATDE5にコピー
atmark@atde5:~/ueye_sdk$ sudo cp ./usr/include/ueye*.h /usr/arm-linux-gnueabihf/include/ atmark@atde5:~/ueye_sdk$ sudo ln -s /usr/arm-linux-gnueabihf/include/ueye.h /usr/arm-linux-gnueabihf/include/uEye.h
1.3 ライブラリをコピー
atmark@atde5:~/ueye_sdk$ sudo cp ./usr/lib/libueye_api.so.4.81 /usr/arm-linux-gnueabihf/lib/ atmark@atde5:~/ueye_sdk$ sudo ln -s libueye_api.so.4.81 /usr/arm-linux-gnueabihf/lib/libueye_api.so.1 atmark@atde5:~/ueye_sdk$ sudo ln -s libueye_api.so.4.81 /usr/arm-linux-gnueabihf/lib/libueye_api.so
1.4 サンプルアプリをビルド
以下のサンプルコードをATDE5にコピーして、ビルドしてみます。
atmark@atde5:~/ueye_sdk$ ls ueye_sample_vga.cpp ueye_sample.cpp atmark@atde5:~/ueye_sdk$ arm-linux-gnueabihf-g++ -lueye_api -lopencv_core -lopencv_highgui -o sample ueye_sample_vga.cpp
2. SDKとサンプルアプリをイメージファイルに含める
以降の手順は、以下のマニュアルに沿って、すでにArmadillo-840向けにユーザーランドとカーネルをビルドしていることを前提にしています。ユーザーランドとカーネルは、/home/atmark配下に展開していることを想定した手順です。 異なるディレクトリに展開している方は随時読み替えてください。
atmark@atde5:~/ueye_sdk$ tar zxvf uEyeSDK-4.81.00-ARM_LINUX_IDS_GNUEABI_HF.tgz -C ~/atmark-dist/romfs/ atmark@atde5:~/ueye_sdk$ cd ~/atmark-dist atmark@atde5:~/atmark-dist$ rm -rf romfs/usr/include/ atmark@atde5:~/atmark-dist$ rm -rf romfs/usr/local/share/ueye/firmware/usb3_addon/ atmark@atde5:~/atmark-dist$ rm -rf romfs/usr/local/share/ueye/ueyeethd/ atmark@atde5:~/atmark-dist$ rm -rf romfs/etc/init.d/ueyeethdrc atmark@atde5:~/atmark-dist$ cp ~/ueye_sdk/sample romfs/usr/bin/ atmark@atde5:~/atmark-dist$ make romfs atmark@atde5:~/atmark-dist$ make image
3. 生成されたユーザーランドイメージの書き込み
以下のマニュアルを参考に、生成されたユーザーランドイメージ(romfs.img.gz)をArmadillo-840に書きこみます。
4. ブートローダのパラメータ変更
SDKの中に含まれるファイルがかなり大きいため、RAMDISKのサイズを広げてあげないと起動ができなくなります。 以下のマニュアルを参考、ブートローダを保守モードで起動してください。
ブートローダに以下のようにパラメータを設定してから、ブートします。
hermit> setenv console=ttySC2,115200 ramdisk_size=140000 hermit>boot
5. デーモンを起動します
以下のコマンドを実行して、カメラの動作に必要なデーモンを起動します。 起動時に自動的に設定したい場合は、/etc/config/rc.localなどに記述するとよいでしょう。
[root@armadillo840-0 (ttySC2) ~]# /etc/init.d/ueyeusbdrc start Starting ueyeusbd... IDS ueyeusbd 4.81.14.0 32bit build Nov 18 2016 07:50:13 ( cmdl scq ) ueyeusbd is running.
以下のように一度USBデバイスの切断/接続メッセージが出ますが、無視します。
usb 1-2: USB disconnect, device number 2 usb 1-2: new high-speed USB device number 3 using rmobile-ehci-driver
6. サンプルを実行してみる
サンプルを実行します。Abordメッセージがでますが、処理は正常終了しているはずです。
(SDK中のライブラリのデストラクタか何かの問題ではないかと思います)
[root@armadillo840-0 (ttySC2) ~]# sample pure virtual method called terminate called without an active exception Aborted
sample.jpgができているはずですので、PCなどで画像を見てみてください。
[root@armadillo840-0 (ttySC2) ~]# ls sample.jpg
7. SDKのツールを使って見る
SDKの中には、ueyeliveというキャプチャ性能などを図るツールがあるようです。 このツールを試してみます。なお-oで指定するファイルは、ファイル名に何を指定しても、bmp形式で保存されます。 またカラーではなくグレースケールで保存されるようです。
[root@armadillo840-0 (ttySC2) ~]# ueyelive -o sample.bmp Sensor model XS. Camera serial no 4103053816. Image size is 1280 x 720 Applied framerate 11.63 fps. 348 frames captured after 30 seconds with 11.63 fps Frames per second: 11.632371 Number of missed frames: 0.
ツールの使い方の詳細は -h オプションでご覧ください。
以上