Armadilloフォーラム

FSEデモアプリ for Armadillo-800シリーズの動作に関して

oono

2014年2月3日 15時55分

毎々お世話になります。
大野と申します。

ユーザーズサイトの「FSEデモアプリ for Armadillo-800シリーズ」をダウンロードして作業していますが
起動時にエラーが発生します。

1、動作環境:Armadillo-810
カーネル:linux-a810-v1.04.bin.gz
ユーザランド:atmark-dist-20131018.tar.gz

OpenCVを使えるように以下の手順に従ってユーザランドを再構築しています。
http://armadillo.atmark-techno.com/howto/armadillo-810-opencv

2、FSEデモアプリのビルド
ダウンロードして解凍したソースファイルをVmWareのATDEでクロスコンパイル
Makeを実行しただけですが特にエラーは発生せずに終了しました。

3、ビルドしたバイナリ「fse_*」を実機のSDカードへ転送

4、一番シンプルな「fse_detect」を実行

# ./fse_detect
------------[ cut here ]------------
WARNING: at drivers/usb/gadget/composite.c:304 usb_function_activate+0x34/0xa4()
Modules linked in:
Backtrace:
[<c00110d8>] (dump_backtrace+0x0/0x110) from [<c038d9d0>] (dump_stack+0x18/0x1c)
 r6:c046adbc r5:00000130 r4:00000000 r3:c04e29c0
[<c038d9b8>] (dump_stack+0x0/0x1c) from [<c001d45c>] (warn_slowpath_common+0x54/0x6c)
[<c001d408>] (warn_slowpath_common+0x0/0x6c) from [<c001d498>] (warn_slowpath_null+0x24/0x2c)
 r8:de024000 r7:de671340 r6:de7c3608 r5:de7a3d80 r4:de7a3d80
r3:00000009
[<c001d474>] (warn_slowpath_null+0x0/0x2c) from [<c027eb58>] (usb_function_activate+0x34/0xa4)
[<c027eb24>] (usb_function_activate+0x0/0xa4) from [<c02804fc>] (uvc_function_connect+0x1c/0x44)
 r4:de7c3600 r3:c04f6288
[<c02804e0>] (uvc_function_connect+0x0/0x44) from [<c028054c>] (uvc_v4l2_open+0x28/0x7c)
 r5:de7c3600 r4:de7c3600
[<c0280524>] (uvc_v4l2_open+0x0/0x7c) from [<c02912fc>] (v4l2_open+0xa4/0xd8)
 r8:00000000 r7:de671340 r6:de7c3608 r5:c0280524 r4:de7c3600
r3:c0280524
[<c0291258>] (v4l2_open+0x0/0xd8) from [<c00b79d0>] (chrdev_open+0x160/0x188)
 r7:00000000 r6:de7a3b40 r5:de671340 r4:de646648
[<c00b7870>] (chrdev_open+0x0/0x188) from [<c00b1fa0>] (__dentry_open.isra.14+0x190/0x29c)
 r8:c00b7870 r7:de646648 r6:de671340 r5:dd157d98 r4:de01d090
[<c00b1e10>] (__dentry_open.isra.14+0x0/0x29c) from [<c00b2da0>] (nameidata_to_filp+0x40/0x4c)
[<c00b2d60>] (nameidata_to_filp+0x0/0x4c) from [<c00c1318>] (do_last+0x7dc/0x7ec)
 r6:00000000 r5:00000000 r4:de613ed8 r3:00000000
[<c00c0b3c>] (do_last+0x0/0x7ec) from [<c00c1518>] (path_openat+0xc0/0x364)
[<c00c1458>] (path_openat+0x0/0x364) from [<c00c18c0>] (do_filp_open+0x34/0x80)
[<c00c188c>] (do_filp_open+0x0/0x80) from [<c00b2e9c>] (do_sys_open+0xf0/0x17c)
 r7:00000001 r6:de59d000 r5:ffffff9c r4:00000003
[<c00b2dac>] (do_sys_open+0x0/0x17c) from [<c00b2f50>] (sys_open+0x28/0x2c)
[<c00b2f28>] (sys_open+0x0/0x2c) from [<c000dbc0>] (ret_fast_syscall+0x0/0x30)
---[ end trace 733675bf930af11d ]---
g_uvc_acm_ether gadget: UVC connect failed with -22
open: Device or resource busy

OpenCVのサンプルと同じようにuvc-gadgetと競合するようなのでプロセスをKILL

# ps | grep uvc
 3065 root       0:00 uvc-gadget -c /dev/video1 -o /dev/video0
 3091 root       0:00 grep uvc
#kill -9 3065
# sh_mobile_ceu sh_mobile_ceu.0: SuperH Mobile CEU driver detached from camera 0

再実行

# ./fse_detect
ioctl(VIDIOC_S_FMT): Invalid argument

となります。
fse_detect.cの330行目でエラーになっているように見えますが、何か環境の構築に問題があるのでしょうか?
サンプルのimages/romfs-a810-fse_at-20130807.img.gzを展開してusr/binの下から持ってきたfse_detectでも結果は同じでした。

お手数ですがよろしくお願いいたします。

コメント

FSEをお試し頂き、ありがとうございます。

デフォルトのイメージファイルでは、USBガジェットが動作しています。こちら
を外さないと、似たような現象になるようです。

ダウンロード頂いた zip ファイルの中に、アプリケーション開発ガイドという
PDFファイルがあります。この PDFの「3.3. デモアプリイメージの作成」に説
明がありますので、ご確認頂けますか?

勘違いさせてしまいそうな記述ですね。すみません。

デフォルトのカーネルイメージファイルでは、USBガジェットのドライバーが動
作しています。こちらを外さないと似たような現象になるようです。

マニュアルにドライバーの外し方が記載されているので、試して頂けますか?

大野です。
早速の回答ありがとうございます。

> デフォルトのイメージファイルでは、USBガジェットが動作しています。こちら
> を外さないと、似たような現象になるようです。
了解いたしました。

> ダウンロード頂いた zip ファイルの中に、アプリケーション開発ガイドという
> PDFファイルがあります。この PDFの「3.3. デモアプリイメージの作成」に説
> 明がありますので、ご確認頂けますか?
はい。確認しました。このドキュメントを元に現在作業をしております。最新の以下のファイルをダウンロードしました。
linux-3.4-at6.tar.gz
atmark-dist-20140131.tar.gz

USBガジェットを外せばいいと思うのですが、2点質問です。
PDFの「3.3. デモアプリイメージの作成」では、
<*>USB Gadget Drivers(Ethernet Gadget(With CDC Ethernet support)) [変更]
変更となっていますが、これは「外す」という意味でしょうか?

現在の環境ですと
<*> USB Gadget Drivers (UVC Composite Device (ACM and Ethernet)
UVC Composite Device (ACM and Ethernet)
と表示されます。(添付ファイル参照)
文言が若干違いますが、上記と同じものと判断してよろしいでしょうか?

Userlandに関しては
[*] mjp-streamer
[*] uvc-gadget
となっていますので、単純に外せば良いのだと思います。添付ファイル参照

お手数ですがよろしくお願いいたします。

ファイル ファイルの説明
kernelconfig.png Kernel Configurationの画面
userlangconfig.png Userland Configurationの画面

> PDFの「3.3. デモアプリイメージの作成」では、
> <*>USB Gadget Drivers(Ethernet Gadget(With CDC Ethernet support)) [変更]
> 変更となっていますが、これは「外す」という意味でしょうか?
>
> 現在の環境ですと
> <*> USB Gadget Drivers (UVC Composite Device (ACM and Ethernet)
> UVC Composite Device (ACM and Ethernet)
> と表示されます。(添付ファイル参照)
> 文言が若干違いますが、上記と同じものと判断してよろしいでしょうか?

Ethernet Gadget の方を有効にし、UVC Composite の方を無効にしてください。
分りづらくて、すみません。

大野です。
回答ありがとうございました。

> Ethernet Gadget の方を有効にし、UVC Composite の方を無効にしてください。
> 分りづらくて、すみません。
了解しました。

カーネルおよびユーザランドのコンフィグを行ってmakeを実行しました。
カーネルのビルドは正常に終わったようですが、ユーザランドのビルドで以下のエラーとなりました。
----エラーメッセージ----
cp: `/usr/arm-linux-gnueabihf/lib/gstreamer-1.0/libgstacmaacdec.so' を stat できません: そのようなファイルやディレクトリはありません
cp: `/usr/arm-linux-gnueabihf/lib/gstreamer-1.0/libgstacmaacenc.so' を stat できません: そのようなファイルやディレクトリはありません
cp: `/usr/arm-linux-gnueabihf/lib/gstreamer-1.0/libgstacmfbdevsink.so' を stat できません: そのようなファイルやディレクトリはありません


make[3]: *** [romfs] エラー 1
make[3]: ディレクトリ `/home/atmark/Demo/build/atmark-dist-20140131/user/gstreamer/gstreamer1.0' から出ます
make[2]: *** [romfs] エラー 2
make[2]: ディレクトリ `/home/atmark/Demo/build/atmark-dist-20140131/user/gstreamer' から出ます
make[1]: *** [romfs] エラー 2
make[1]: ディレクトリ `/home/atmark/Demo/build/atmark-dist-20140131/user' から出ます
make: *** [romfs] エラー 1
----エラーメッセージ----

実際にクロスコンパイル環境を確認すると、/usr/arm-linux-gnueabihf/lib/gstreamer-1.0はありません。
/usr/arm-linux-gnueabihf/lib/gstreamer-0.10
です。
これはクロスコンパイル環境が古いということでしょうか?
ATDE5 v20130927を使用してビルド環境構築しています。

ビルド対象のkernelとUserlandのソースファイルは最新版をダウンロードしています。
kernel v3.4-at6
Userland v20140131

最新のATDE5でビルド環境を構築すればいいのでしょうか?

お手数ですがよろしくお願いします。

最新版のatmark-distでArmadillo-800シリーズ向けに
userlandをビルドするにはgstreamer1.0が必要になります。

>最新のATDE5でビルド環境を構築すればいいのでしょうか?
最新版のATDE5(v20140131)でビルドするか、
gstreamer1.0関連のクロスパッケージをインストールしてください。
下記のコマンドでインストールできます。

sudo apt-get update
sudo apt-get install gstreamer1.0

大野です。
毎々お世話になります。
回答ありがとうございました。

> 最新版のatmark-distでArmadillo-800シリーズ向けに
> userlandをビルドするにはgstreamer1.0が必要になります。
> 最新版のATDE5(v20140131)でビルドするか、
> gstreamer1.0関連のクロスパッケージをインストールしてください。

ATDE5(v20140131)でビルドしたところ問題なくビルドが終わりました。
FSEサンプルを組み込んだ、カーネルとユーザランドを作成してSDカードから問題なくブートしました。
サンプルの1つ、fse_detectを動かしたところ、それらしい値が画面に表示されました。

●問題点
fse_detect_serverを動かしたいのですが、これはPCとArmadillo-810が通信できる必要があります。
現在通信が出来ない状況です。usb0が存在しません。

FSEサンプルの説明書には、以下の記述があります。

------------説明抜粋--------
fse_detect_serverは、WebWeb サーバとして動作ますので、事前に USB イーサネットガジェを使用した ネットワーク設定を適切に行う必要があります。
設定方法ついては、「 ネットワーク設定を適切に行う必要があります。方法ついては、「 Armadillo Armadillo Armadillo -810 製 品マニュアル」の「 5.1.3. イーサネットガジェ」及び「 5.2. ネットワーク」を参照して下さい。
------------説明抜粋--------

マニュアルには、以下の説明があります。
------------説明抜粋--------
5.1.3. イーサネットガジェット
Armadillo-810 のイーサネットガジェットは、「RNDIS(Remote NDIS)」として実装されています。
イーサネットガジェットを認識すると"usb0"が表示されます
------------説明抜粋--------

現状は、usb0が存在しません。
# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

以前のご回答で
>Ethernet Gadget の方を有効にし、UVC Composite の方を無効にしてください。
とのことでしたので、その通りに対応しました。
しかしUVC Compositeの配下に「RNDIS support」があるようなので(添付ファイル参照)、これを無効にするとUSB イーサネットガジェを使用したネットワーク接続が出来ないのではないでしょうか?

UVC Composite も有効にする必要があるのでしょうか?
それとも別の設定があるのでしょうか?

お手数ですがよろしくお願いいたします。

ファイル ファイルの説明
KernelConfigration.png UVC Composite 現在は無効にしています

> FSEサンプルを組み込んだ、カーネルとユーザランドを作成してSDカードから問題なくブートしました。
> サンプルの1つ、fse_detectを動かしたところ、それらしい値が画面に表示されました。

よかったです。

> ●問題点
> fse_detect_serverを動かしたいのですが、これはPCとArmadillo-810が通信できる必要があります。
> 現在通信が出来ない状況です。usb0が存在しません。

Ethernet Gadget の方を有効にした時

[M]

となってました? それとも

[*]

となってました? 「[M]」だとモジュールになってしまい、カーネルには組み込
まれないので、「[*]」としてみてください。組み込まれたら、usb0 が見える
はずです。

もし可能であれば、make menuconfig を行なった後の .config を添付して頂け
ますか? atmark-dist/linux-3.x/.config です。

大野です。
毎々お世話になります。
早速のご回答ありがとうございます。

> もし可能であれば、make menuconfig を行なった後の .config を添付して頂け
> ますか? atmark-dist/linux-3.x/.config です。
OK、NG双方添付致しました。

ドライバが[M]となっておりました。
そのため組み込まれていなかったものと思われます。[*]となるように再設定してビルドしたカーネルと差し替えました。
usb0が表示されました。ありがとうございます。

PCのブラウザからProxyの例外にarmadillo-810のガジェットイーサのIPアドレスを設定して
http://IPアドレス:8080
でアクセスしました。
armadillo-810のコンソールにHTTP応答の電文が表示されました。
→添付ファイル:command.png

しかし、ブラウザ上では、保存画面?のようなものが表示されました。
→添付ファイル;access.png

これはブラウザのバージョンあるいは設定の問題でしょうか?
ブラウザはIE8:8.0.7601を使っております。

お手数ですがよろしくお願いいたします。

ファイル ファイルの説明
ng_config.txt NG時の.config
ok_config.txt NG時の.config
access.png ブラウザでの表示
command.png Armadilloのコンソールでの表示

大野です。
毎々お世話になります。

現状、Armadillo-810側はおそらく問題ないかと思います。
ブラウザからアクセスすると保存ダイアログがポップアップする状態です。

ドキュメントによるとmotion JPEGに対応しているブラウザが必要ということでした。
http://d.hatena.ne.jp/iww/20130730/mjpg
上記サイトによるとIE8はNGでしたので
Opera, Chromeも試してみましたが、保存ダイアログがポップアップあるいは無反応でした。
何か設定が必要なのでしょうか?

お手数ですがよろしくお願いいたします。

Chrome は、バージョンが上ってから multipart/x-mixed-replace に対応しな
くなったみたいです。今後、生データーではなく html を返すように修正しよ
うと思います。httpd.c の stream_send() 内で、html を生成する感じです。
すみませんでした。

Windows の Firefox では見れるようなので、お手数ですが、試して頂けますか?

横から申し訳ございません。
大庭と申します。

上記を見ながら進めておりましたが私もエラーで止まってしまいました。
ATDE5は最新を使用しています。
修正点を教えて頂けないでしょうか?
よろしくお願い致します。

cp: `squashfs-tools-4.2/squashfs-tools/mksquashfs' を stat できません: そのようなファイルやディレクトリはありません
cp: `squashfs-tools-4.2/squashfs-tools/unsquashfs' を stat できません: そのようなファイルやディレクトリはありません
make[3]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/squashfs-tools' から出ます
make[3]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/sudo' に入ります
romfs-inst.sh /usr/bin/sudo
cp: `sudo' を stat できません: そのようなファイルやディレクトリはありません
chmod 4611 /home/atmark/atmark-dist-20140131/romfs/usr/bin/sudo
chmod: `/home/atmark/atmark-dist-20140131/romfs/usr/bin/sudo' にアクセスできません: そのようなファイルやディレクトリはありません
make[3]: *** [romfs] エラー 1
make[3]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/sudo' から出ます
make[2]: *** [romfs] エラー 2
make[2]: ディレクトリ `/home/atmark/atmark-dist-20140131/user' から出ます
make[1]: *** [romfs] エラー 1
make[1]: ディレクトリ `/home/atmark/atmark-dist-20140131' から出ます
make: *** [romfs] エラー 2

at_daisuke.sasaki

2014年7月24日 13時36分

佐々木大輔です。

だいぶ時間がたってしまいましたが、
大庭さんの問題は既に解決していますか?

> 上記を見ながら進めておりましたが私もエラーで止まってしまいました。
> ATDE5は最新を使用しています。
> 修正点を教えて頂けないでしょうか?

#フォーラムを見返していて、気になりました。

最新のATDE5を使用すると、特に問題なくビルドできるようなので、
何か手順のミスかなぁ?と思っているのですが。