「USL-5P」の編集履歴(バックアップ)一覧はこちら

USL-5P」(2006/02/23 (木) 20:09:16) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

SH4でLinuxが動くボードを調べていたら、I/OデータのUSL-5Pっていうのが、linuxが動くということが分かった。玩具(?)として面白そうなので、早速秋葉原で買ってくる。 動かす前にいきなりばらして、コンパクトフラッシュが64Mなのを確認。ネットでは、128Mがささっているロットもあるように書いてあったが、、。どうやって遊ぼうか考え中。 *購入 net で調べて、秋葉原のクレバリーで税込み12,043円で購入。ちなみに、ビックカメラだと税込み14,800円だった。ついでに、64MのCFを630円で購入。 *動作確認 ばらすことが前提だけど、とりあえず動作確認はOK。 *ばらす とりあえずは、1つしかないネジを外す。 [[USL-5Pで遊ぶ話>http://tyche.pu-toyama.ac.jp/~a-urasim/usl-5p/]] ここに図が書いてあるけど、本物でやらないといまひとつわからない。壊さない程度に引っ張ったり押したりしていると外れる。CFは128MBのがついているロットもあるみたいだけど、64Mのがついていた。上のページのやり方に沿って、新しいCFにコピーして実験。 *telnetでログイン とりあえず、書かれているようにやると telnet でログインできるようになる。 *開発環境 次に、プログラムを作ろうとすると、開発環境が必要になる。当然本体には入っていない。上のページも [[USL-5P - PukiWiki>http://eggplant.ddo.jp/www/pukiwiki/index.php?USL-5P]] も、kernel 入れ替えが前提。C コンパイラだけあれば良いんだけど、、。 [[開発環境>http://eggplant.ddo.jp/www/pukiwiki/index.php?%B3%AB%C8%AF%B4%C4%B6%AD%20%28debian26%C8%C7%29]] できるだけ情報が多い方が良いので、iohack の debian2.6 のセルフビルドにトライする。64MのCFだと無理くさい。外付けにUSBディスクをつけるか、容量の大きいCFかMicroDriveが必要。ちょっと近くのパソコンショップに行って物色。(本体を買うときに秋葉原で買っておけばよかった、、、) 辻堂のPC-DEPOで、1GのCFを安売りしていたのを買う。(kakaku.comの最安値が6131円、辻堂で7900円。まあしょうがないか。)ついでに、Linux World を見たら、調度 USL-5Pの特集があったので買ってきた。fdiskだけ少し小さめにしてこの本の通りやったら、1発で debian が動いた! apt-get update, apt-get upgrade するとエラーが出て、「ここで止めますか?」みたいなメッセージ。とりあえず止める。 その後、 [[開発環境>http://eggplant.ddo.jp/www/pukiwiki/index.php?%B3%AB%C8%AF%B4%C4%B6%AD%20%28debian26%C8%C7%29]] にしたがって、開発環境を入れる。CでHelloWorldが動く。 *Todo -Webカメラをつなぐ -Pasoriをつなぐ *試行錯誤 カメラの画像を送るプログラムを、JMFのサンプルを使って、Javaで作った。これは、videoとしてはmotion jpegで、RTPで送れる。(以上全てWindows上) この環境をUSL-5Pに移行しようと思ったけど、Javaがない。 仕方ないので、Cで書ける方法を探していて、どうも ffmpeg というツールでできそうだというところまで到達。 Linux上で試して、ffmpegでファイルに落としたデータをJMFのJMStudioで再生できるところまで確認。これを RTP で送ろうとするとうまくいかない。送り側が、JMFのサンプルだとできるので、おそらく video のフォーマットだと予測。JMFは、かなり自動でやってくれるが、ffmpegは多彩なオプションを使ってうまく指定してあげないといけない。予備知識が全くないので、とりあえずネットサーフィンして調べる。現状はここまで (日記になってしまっている。) *動画フォーマット 色々調べた結果、ffmpegは、(ソースをいじると)motion JPEG(って、おそらく、JPEGそのもの)を RTP で送ることができる。実は、RTPのマーカがオンになるようにしてあげないと、JMFのJMStudioで受けられない。ちなみに、JMStudioをLinuxで起動するには、-Dawt.toolkit=sun.awt.motif.MToolKit をつけないといけない。 ところが、Java JMF で RTP で受けようとすると、JPEG VIDEO (= RFC2435)を期待している。(送り側のサンプルはそれで送っている。) で、画像のフォーマットが違う。もう少し調べないといけない。はまっていく、、、。 一週間くらい格闘して、ffmpeg でかろうじて RTP で JPEG を送るところまでできたが、絵が汚い。JPEGを作る処理もいじったので、どこかにバグがあるに違いないが、お手上げ状態。データが圧縮されるロジックが複雑過ぎてデバッグできないよお、、、。しかたないので別のツールをベースにすることにする。grabbjが簡単そう。jpegって、ライブラリにあるのを今さらながら発見。 *カメラドライバ まず、カメラのドライバを入れる。カメラは、秋葉原で買ってきた怪しいカメラで、ドライバは標準では入っていない。ネットで探して、 spca5xx を見つける。module のビルドなので、カーネルのビルド環境がないといけない。仕方ないので入れる。ディスクは外付けUSBをつける。 makeすると、いきなり、コンパイラが怒る。-m4-nofpu というオプションがないという。これは、sh4専用のオプションみたい。良く分からないので、Makefileを修正して、オプションを外してしまう。 makeが終わったら、コンパイラのバージョンが違うと怒られた。gcc-3.4 を入れなおして、Makefileを直してビルドしなおし。最初から入っているCCを直しただけだとMakefileの定義の順番で効かない。前のほうで定義する必要あり。 2.6 だと、xxx.o でなくて、 xxx.ko が入る。 やっと、ビルド、インストールできる。カメラをUSBに刺して dmesg で見ると、認識されている。moduleもロードされている。 *vgrabbj vgrabbjを入れる。libjpegが必要。aptにはないので、ソースを落としてビルド。 make install しても、ないと怒られる。調べると、make install-lib をしないとインストールされない!! さらに、libpng が必要。これもソースを探すが、オリジナルの場所だとサーバが死んでいてダウンロードできない。仕方ないので、src.rpmを見つけてそれを落とす。rpmだと、インストールできないので、alien を入れて、ソースを取り出す。ビルドにzlibが必要。これはaptでget。makeでエラー。いい加減耐えられないので、どうせ使わない png は切り捨てることにして、vgrabbj のソースを修正する。(どこかのホームページに書いてあった。) やっと、makeを実行できる。でもキャストのエラー。intelマシンだとこんなの起きなかったのに、、、。手で修正(実は直し方が誤っていて、後で修正した。) /dev/video のデバイスを作る。作り方がわからないので、xawtv や vl4-conf とかを apt で get したが分からない。xawtvをソースごと落として、MAKEDEV.v4l を実行して作る。vgrabbj を実行。妙なエラーで死ぬ。デバッグ。先ほどのキャストのエラーを手で直したところが間違っていた。修正したら、動くようになった。キャプチャしてjpegになったのをWindowsマシンで見ると、確かに写っている。OK。 その後、xawtv は自力でビルドできたが、camserv はビルドできない。 gcc -g -O2 -o camserv camconfig.o camserv.o filter.o main_loop.o picture_loop.o shm.o video.o -Wl,--export- dynamic ../libltdl/.libs/libltdlc.al -ldl ../common/ libcommon.a -lnsl -ljpeg -lm /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches no n-TLS reference in camserv.o /lib/libc.so.6: could not read symbols: Bad value collect2: ld returned 1 exit status ううむ、訳分からん。 TLS っていうのは、thead local segment らしい。 色々、調べていたら、kaffe があるのを発見。Javaコードが動くのなら、こんな苦労はしなくていいんだけど。 http://jbpe.tripod.com/rfcj/rfc1889.j.sjis.txt *リンク集 [[USL-5Pで定点カメラをつくる>http://akita11.jp/plan/usl5p.html]] [[USL-5Pで遊ぶ話>http://tyche.pu-toyama.ac.jp/~a-urasim/usl-5p/]] [[USL-5P - PukiWiki>http://eggplant.ddo.jp/www/pukiwiki/index.php?USL-5P]]
SH4でLinuxが動くボードを調べていたら、I/OデータのUSL-5Pっていうのが、linuxが動くということが分かった。玩具(?)として面白そうなので、早速秋葉原で買ってくる。 動かす前にいきなりばらして、コンパクトフラッシュが64Mなのを確認。ネットでは、128Mがささっているロットもあるように書いてあったが、、。どうやって遊ぼうか考え中。 *購入 net で調べて、秋葉原のクレバリーで税込み12,043円で購入。ちなみに、ビックカメラだと税込み14,800円だった。ついでに、64MのCFを630円で購入。 *動作確認 ばらすことが前提だけど、とりあえず動作確認はOK。 *ばらす とりあえずは、1つしかないネジを外す。 [[USL-5Pで遊ぶ話>http://tyche.pu-toyama.ac.jp/~a-urasim/usl-5p/]] ここに図が書いてあるけど、本物でやらないといまひとつわからない。壊さない程度に引っ張ったり押したりしていると外れる。CFは128MBのがついているロットもあるみたいだけど、64Mのがついていた。上のページのやり方に沿って、新しいCFにコピーして実験。 *telnetでログイン とりあえず、書かれているようにやると telnet でログインできるようになる。 *開発環境 次に、プログラムを作ろうとすると、開発環境が必要になる。当然本体には入っていない。上のページも [[USL-5P - PukiWiki>http://eggplant.ddo.jp/www/pukiwiki/index.php?USL-5P]] も、kernel 入れ替えが前提。C コンパイラだけあれば良いんだけど、、。 [[開発環境>http://eggplant.ddo.jp/www/pukiwiki/index.php?%B3%AB%C8%AF%B4%C4%B6%AD%20%28debian26%C8%C7%29]] できるだけ情報が多い方が良いので、iohack の debian2.6 のセルフビルドにトライする。64MのCFだと無理くさい。外付けにUSBディスクをつけるか、容量の大きいCFかMicroDriveが必要。ちょっと近くのパソコンショップに行って物色。(本体を買うときに秋葉原で買っておけばよかった、、、) 辻堂のPC-DEPOで、1GのCFを安売りしていたのを買う。(kakaku.comの最安値が6131円、辻堂で7900円。まあしょうがないか。)ついでに、Linux World を見たら、調度 USL-5Pの特集があったので買ってきた。fdiskだけ少し小さめにしてこの本の通りやったら、1発で debian が動いた! apt-get update, apt-get upgrade するとエラーが出て、「ここで止めますか?」みたいなメッセージ。とりあえず止める。 その後、 [[開発環境>http://eggplant.ddo.jp/www/pukiwiki/index.php?%B3%AB%C8%AF%B4%C4%B6%AD%20%28debian26%C8%C7%29]] にしたがって、開発環境を入れる。CでHelloWorldが動く。 *Todo -Webカメラをつなぐ -Pasoriをつなぐ *試行錯誤 カメラの画像を送るプログラムを、JMFのサンプルを使って、Javaで作った。これは、videoとしてはmotion jpegで、RTPで送れる。(以上全てWindows上) この環境をUSL-5Pに移行しようと思ったけど、Javaがない。 仕方ないので、Cで書ける方法を探していて、どうも ffmpeg というツールでできそうだというところまで到達。 Linux上で試して、ffmpegでファイルに落としたデータをJMFのJMStudioで再生できるところまで確認。これを RTP で送ろうとするとうまくいかない。送り側が、JMFのサンプルだとできるので、おそらく video のフォーマットだと予測。JMFは、かなり自動でやってくれるが、ffmpegは多彩なオプションを使ってうまく指定してあげないといけない。予備知識が全くないので、とりあえずネットサーフィンして調べる。現状はここまで (日記になってしまっている。) *動画フォーマット 色々調べた結果、ffmpegは、(ソースをいじると)motion JPEG(って、おそらく、JPEGそのもの)を RTP で送ることができる。実は、RTPのマーカがオンになるようにしてあげないと、JMFのJMStudioで受けられない。ちなみに、JMStudioをLinuxで起動するには、-Dawt.toolkit=sun.awt.motif.MToolKit をつけないといけない。 ところが、Java JMF で RTP で受けようとすると、JPEG VIDEO (= RFC2435)を期待している。(送り側のサンプルはそれで送っている。) で、画像のフォーマットが違う。もう少し調べないといけない。はまっていく、、、。 一週間くらい格闘して、ffmpeg でかろうじて RTP で JPEG を送るところまでできたが、絵が汚い。JPEGを作る処理もいじったので、どこかにバグがあるに違いないが、お手上げ状態。データが圧縮されるロジックが複雑過ぎてデバッグできないよお、、、。しかたないので別のツールをベースにすることにする。grabbjが簡単そう。jpegって、ライブラリにあるのを今さらながら発見。 *カメラドライバ まず、カメラのドライバを入れる。カメラは、秋葉原で買ってきた怪しいカメラで、ドライバは標準では入っていない。ネットで探して、 spca5xx を見つける。module のビルドなので、カーネルのビルド環境がないといけない。仕方ないので入れる。ディスクは外付けUSBをつける。 makeすると、いきなり、コンパイラが怒る。-m4-nofpu というオプションがないという。これは、sh4専用のオプションみたい。良く分からないので、Makefileを修正して、オプションを外してしまう。 makeが終わったら、コンパイラのバージョンが違うと怒られた。gcc-3.4 を入れなおして、Makefileを直してビルドしなおし。最初から入っているCCを直しただけだとMakefileの定義の順番で効かない。前のほうで定義する必要あり。 2.6 だと、xxx.o でなくて、 xxx.ko が入る。 やっと、ビルド、インストールできる。カメラをUSBに刺して dmesg で見ると、認識されている。moduleもロードされている。 *vgrabbj vgrabbjを入れる。libjpegが必要。aptにはないので、ソースを落としてビルド。 make install しても、ないと怒られる。調べると、make install-lib をしないとインストールされない!! さらに、libpng が必要。これもソースを探すが、オリジナルの場所だとサーバが死んでいてダウンロードできない。仕方ないので、src.rpmを見つけてそれを落とす。rpmだと、インストールできないので、alien を入れて、ソースを取り出す。ビルドにzlibが必要。これはaptでget。makeでエラー。いい加減耐えられないので、どうせ使わない png は切り捨てることにして、vgrabbj のソースを修正する。(どこかのホームページに書いてあった。) やっと、makeを実行できる。でもキャストのエラー。intelマシンだとこんなの起きなかったのに、、、。手で修正(実は直し方が誤っていて、後で修正した。) /dev/video のデバイスを作る。作り方がわからないので、xawtv や vl4-conf とかを apt で get したが分からない。xawtvをソースごと落として、MAKEDEV.v4l を実行して作る。vgrabbj を実行。妙なエラーで死ぬ。デバッグ。先ほどのキャストのエラーを手で直したところが間違っていた。修正したら、動くようになった。キャプチャしてjpegになったのをWindowsマシンで見ると、確かに写っている。OK。 その後、xawtv は自力でビルドできたが、camserv はビルドできない。 gcc -g -O2 -o camserv camconfig.o camserv.o filter.o main_loop.o picture_loop.o shm.o video.o -Wl,--export- dynamic ../libltdl/.libs/libltdlc.al -ldl ../common/ libcommon.a -lnsl -ljpeg -lm /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches no n-TLS reference in camserv.o /lib/libc.so.6: could not read symbols: Bad value collect2: ld returned 1 exit status ううむ、訳分からん。 TLS っていうのは、thead local segment らしい。 色々、調べていたら、kaffe があるのを発見。Javaコードが動くのなら、こんな苦労はしなくていいんだけど。 http://jbpe.tripod.com/rfcj/rfc1889.j.sjis.txt *画像転送 色々試して、RTPでJPEG payload を送ることができるようになった。本当は、Motion JPEGで送りたいのだが、フォーマットが分からない。各社各様みたい。それと、Java の JMF で RTP で画像を送ろうとすると、RTPのJPEG Payloadになってしまう。良く分からずにサンプルプログラムの通りやっただけなので、まあこれで良しとする。これは RFC もある。vgarbbjを改造して、遅れるようにした。最初適当に作って、送信者のアカウントとか、統計データとか省略して、なかなかうまくいかなかったのが、最終的には、RFC の通りに正確に送らないといけないことが分かった。 *リンク集 [[USL-5Pで定点カメラをつくる>http://akita11.jp/plan/usl5p.html]] [[USL-5Pで遊ぶ話>http://tyche.pu-toyama.ac.jp/~a-urasim/usl-5p/]] [[USL-5P - PukiWiki>http://eggplant.ddo.jp/www/pukiwiki/index.php?USL-5P]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
人気記事ランキング
目安箱バナー