20091202_IMG_9955先日、Rowboat DSP Supportのビルドが通ったことを伝えましたが、今度は実際に動かしてみました。Rowboatにはルートファイルシステム(RFS)を作るためのシェルスクリプト(/build/tools/mktarball.sh)がありますが、自分の環境ではSegmentation Faultになってしまいました。http://code.google.com/p/rowboat/wiki/ConfigureAndBuildの内容に従っているんですけどね。う〜ん、Windows上のNTFSにマウントした領域にデータがあるのが問題なのでしょうか。そういえばchmod 777 xxxとしても属性が変わらないですね。きちんと、ext3上にコピーしてから実行するとよいようですが、それでもエラーになる場合は、mktarball.shでtarを呼び出しているところをchmodとchownに変えて、属性と所有権だけ変えるようにすることで回避できました。
I have reported I could successfully build rowboat supprted by DSP the other day. I run the built firmware this time. rowboat has a shell script to make root file system, but it causes segmentation fault on my environment although I follow the directions written in http://code.google.com/p/rowboat/wiki/ConfigureAndBuild. Data on the mounted NTFS may cause this problem ? I remember that chmod 777 xxx doesn't affect on the same situation... if I try again after copying data from NTFS to ext3, and it succeeds. If problem still occur, then calling tar part in the mktarball.sh should be changed to chmod and chown. This will just change property and owner instead of tar.

上記のRFSをSDカードのext3領域に配置して、SDカードのFAT領域にはBeagleboard用のuboot(http://code.google.com/p/rowboat/wiki/BeagleBoard, http://rowboat.googlecode.com/files/u-boot.beagle.bin)を入れて、kernelをビルドした際に出力されるuImageを入れます。そしてSDカードをBeagleboardにさして起動します。
I copied the RFS into ext3 area and uboot for beagleboard and uImage (built kernel) into FAT area of SD card. Then insert the SD card into beagleboard and reboot it.
起動コマンドは以下のよう指定しました。mem=88M, mem=128Mの指定はDSPを利用するときに必要らしいです。DSP用のメモリ空間を割けるような指定になっているようです。
The boot command is as follows. mem=88M and mem=128M are required when we use DSP. It indicate that memory area for DSP should not be used by others.

# setenv bootcmd 'mmcinit; fatload mmc 0 84000000 uImage; bootm 84000000'
# setenv bootargs 'mem=88M@0x80000000 mem=128M@0x88000000 androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw init=/init rootwait omapfb.video_mode=640x480MR-16@60 omap-dss.dev_disp=dvi'
# saveenv
# reset

さて、Androidが起動して見慣れたHOME画面が無事表示されました。今回は、これに加えてコマンドラインからGstreamerを実行してみたいと思います。コマンドはgst-launch-0.10です。http://wiki.davincidsp.com/index.php/Example_GStreamer_Pipelinesで詳細な起動コマンドが記載されています。とりあえずテストモードを実行してみます。
Now, I could see the HOME screen of android. I will try Gstreamer from command line this time. The command is gst-launch-0.10. http://wiki.davincidsp.com/index.php/Example_GStreamer_Pipelines lists up detailed boot commands of Gstreamer. I will try test mode at first.

# gst-launch -v videotestsrc ! TIDmaiVideoSink videoStd=VGA videoOutput=DVI accelFrameCopy=FALSE sync=false

とするとビデオ信号が表示されます。一応動いているようですね。ではいよいよH.264(MPEG4 AVC)ファイルを動かしみます。
Will display video signals. It seems working. Let's try H.264(MPEG4 AVC) next.

# gst-launch-0.10 -v filesrc location=sample.264 ! TIViddec2 codecName=h264dec engineName=codecServer ! TIDmaiVideoSink videoStd=VGA videoOutput=LCD sync=false

しかし、どうしてもエラーになってしまいます。なぜでしょう?エラーメッセージは以下のようです:
However, it cause error. Why ? Displayed error messages are as follows:

(gst-launch-0.10:894): GStreamer-CRITICAL **: gst_caps_get_structure: assertion 'GST_IS_CAPS (caps)' failed
(gst-launch-0.10:894): GStreamer-CRITICAL **: gst_structure_get_value: assertion 'structure != NULL' failed
(gst-launch-0.10:894): GStreamer-CRITICAL **: gst_value_get_mini_object: assertion 'GST_VALUE_HOLDS_MINI_OBJECT (value)' failed

う〜ん、ソースコードを見ればわかるのかもしれません。ちょっと見てみますか。
gee...there may be some hint by checking source codes... I will check.

ちなみにTIのGStreamerの参考資料を見つけました。https://gstreamer.ti.com/gf/download/docmanfileversion/68/1271/GStreameronTIDaVinciandOMAPPlatforms.pdf
I found a good document about TI's GStreamer.