あと、Wi-Fi の master モードを試したいんだなー。することはたくさんあります。幸せです。
2009年10月9日金曜日
ToUcam でもダメだった
2009年10月8日木曜日
2009年10月7日水曜日
ノイズは、こんな感じ~
2009年10月6日火曜日
webcam は繋がったが…
しばらく試行錯誤した後、一応、ffmpeg で動画の取り込みができることが分かりました。ばんざい! でも、いろいろ問題があります。一つはドライバが不安定なこと。ときどき、/dev/video0 をオープンできなくなることがあります。もう一つは、動画に変なノイズ(ブロックノイズやモスキートノイズではない)が乗ることです。とりあえず、最低限の確認はできたので、これで良しとします。次回は、何か別の webcam を探してこようと思います。
以下、備忘録です。
$ dmesg (の一部) Linux video capture interface: v2.00 pwc: Philips webcam module version 10.0.13 loaded. pwc: Supports Philips PCA645/646, PCVC675/680/690, PCVC720[40]/730/740/750 & PCVC830/840. pwc: Also supports the Askey VC010, various Logitech Quickcams, Samsung MPC-C10 and MPC-C30, pwc: the Creative WebCam 5 & Pro Ex, SOTEC Afina Eye and Visionite VCS-UC300 and VCS-UM100. pwc: Logitech QuickCam 4000 Pro USB webcam detected. pwc: Registered as /dev/video0. $ setpwc -S 320,240,30 $ ffmpeg -f video4linux -s 320x240 -r 30 -t 10 -i /dev/video0 foo.mpg
参考
2009年10月5日月曜日
U-Boot (mkimage) のインストール
ということで、U-Boot をインストールしています。バージョンは u-boot-2009.08 です。今、ビルド中。。。こんな感じです。
$ export PATH=クロスコンパイラの入ったパス:$PATH $ make CROSS_COMPILE=arm-unknown-linux-gnu- omap3_beagle_config $ make CROSS_COMPILE=arm-unknown-linux-gnu- dep $ make CROSS_COMPILE=arm-unknown-linux-gnu-
とりあえず、ビルドはできました。(しかし、なんで make install が無いんだ?)
さて、make uImage です。
Kernel: arch/arm/boot/Image is ready Kernel: arch/arm/boot/zImage is ready UIMAGE arch/arm/boot/uImage Image Name: Linux-2.6.28-00008-g7f78d9f Created: Mon Oct 5 23:15:42 2009 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2702880 Bytes = 2639.53 kB = 2.58 MB Load Address: 80008000 Entry Point: 80008000 Image arch/arm/boot/uImage is ready
じゃかじゃーん。果たして、これで BeagleBoard はちゃんと起動するのでしょうか?
後記
無事にカーネルをブートできました。偶然かも知れませんが、元々動かしていたカーネルも、今回生成したカーネルも、GCC 4.3.2 によるものでした。以下に、ブートメッセージの一部を示します。
Linux version 2.6.28-00008-g7f78d9f (yokoyama@hogehoge) (gcc version 4.3.2 (crosstool-NG-1.4.2) ) #1 Mon Oct 5 22:38:50 JST 2009 CPU: ARMv7 Processor [411fc082] revision 2 (ARMv7), cr=10c5387f CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache Machine: OMAP3 Beagle Board Memory policy: ECC disabled, Data cache writeback OMAP3430 ES2.1 SRAM: Mapped pa 0x40200000 to va 0xd7000000 size: 0x100000 Reserving 15728640 bytes SDRAM for VRAM Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 Kernel command line: console=ttyS2,115200n8 root=/dev/mmcblk0p2 rootwait rootfstype=ext3 ro Clocking rate (Crystal/DPLL/ARM core): 26.0/332/500 MHz
これで、カーネル周りの開発も行けそうです。ちょっと嬉しい。
ところで udev
BeagleBoard の Debian に dosfstools を入れて、mkdosfs をできるようにしたのですが、なんと /dev/sda1 がありません。udev のマニュアルとか眺めて頭を抱えていたのですが、実は /dev/mmcblk0p1 という名前で参照できることが分かりました。かなり時代に取り残されている私です。
make uImage と crosstool-ng
Linux カーネルについては、昔ちょっとだけ勉強したような気もするのですが、vmlinuz とか bzImage とか、忘れました。今日、会社の昼休みに U-Boot のドキュメントとか読んでみたのですが、mkimage の要求もよく分かりません。しかしいろいろググっていたところ、Linux のカーネルビルドで make uImage とかできることが分かり、そちらを試してみようと思っています。
さて。家に帰ってから早速 make uImage してみようと思ったのですが、やはり BeagleBoard 上でのセルフビルドには時間がかかります。一番の原因は、プロセッサの処理速度というよりも、ローカルディスクの容量と速度が不十分なことです。今は、カーネルソースを NFS サーバーに置いているのですが、やはりローカルディスクに敵いませんし、/tmp が SD カード上というのも(フラッシュメモリは書き換えに弱いので)不安が残ります。tmpfs を使えば良いのでしょうが、今度はメモリサイズが気になります。最終的にはセルフコンパイラの恩恵に与るとしても、普段の実験には Celeron 1.8GHz を使いたいと思いました。
そんな訳で、改めて crosstool を試してみることにしました。昨日の実験で、Linux カーネルのビルド方法を少しずつ思い出したのも、その決断を後押ししています。
最初、crosstool の 0.43 を試してみたのですが、なんと gcc が -march=armv7-a というオプションを受け付けないことが判明しました。どうも、GCC のバージョン 4.1.0 では古すぎるようです。再度ググってみたところ、今は crosstool-ng というのがあるそうで、そちらを試すことにしました。ng と言っても、無印 crosstool とはかなり違うようで、いきなり configure && make install が必要になったりしました。(後で分かりましたが、Linux カーネルのビルドを真似しているようです。)
crosstool-ng 1.4.2 のインストール後、
$ ct-ng arm-unknown-linux-gnu $ ct-ng menuconfig $ ct-ng build
としてみたのですが、途中で gcj がなんとかと言って落ちました。おおお、Java は要らん、Java は! という訳で、今度は ct-ng menuconfig で、Java と Fortran の選択を外してみました。再度 ct-ng arm-unknown-linux-gnu build したところ、今度は autoconf や automake のバージョンが古いといって怒られます。さらに、glibc-cvs-2.9 とかいうのを拾いにいって失敗したり、いろいろ苦労しました。結局、tar.gz から autoconf 2.60 と automake 1.10.2 をインストールし、さらに menuconfig で調整した結果、今のところかなり順調にビルドが進んでいます。
果たして、crosstool-ng は無事にインストールできるのでしょうか。そんでもって、BeagleBoard 用のカーネルのクロスビルドはできるのでしょうか!?
後記 1
とりあえず、セルフ環境での make uImage はうまく行きそうです。まだ、Debian ARM のカーネルで試しただけですが。
後記 2
crosstool-ng 1.4.2 での armel コンパイラは無事にビルドできました。最適な環境かどうか、また、今のところ BeagleBoard のカーネルがビルドできるかどうか不明ですが、とりあえず crosstool-ng 1.4.2 用の .config ファイルをここに置いておきます。
2009年10月4日日曜日
セルフ環境でカーネルビルド
今度は、BeagleBoard で実際にブートできるカーネルをビルドしてみようと思います。道のりは長いですが、頑張ります。