ArmadilloでDirectFBを動かしてみましょう。
DirectFBとは、Linux Frame Buffer上で動作するGraphics APIです。
DirectFB上で動作することができるアプリケーションも色々とあるようです。
- DFBTerm(ターミナルソフト)
- DirectVNC(VNCクライアント)
などがあります。
今回のDirectFBの動作確認には、Input Deviceの確認やベンチマークテストまで含まれているDirectFB-examplesを使用してみます。
1. ソースコードの取得
ソースコードは、DirectFB のページ(現在アクセスできません。代わりに DirectFBのメンテナーが Githubにコードを公開しています)から取得します。
以下のようにコマンドを入力して取得してください。
[PC ~]$ mkdir directfb [PC ~]$ cd directfb [PC ~/directfb]$ wget http://www.directfb.org/downloads/Core/DirectFB-1.0.1.tar.gz [PC ~/directfb]$ wget http://www.directfb.org/downloads/Extras/DirectFB-examples-1.0.0.tar.gz
続いてアーカイブを展開していきます。
[PC ~/directfb]$ tar zxvf DirectFB-1.0.1.tar.gz [PC ~/directfb]$ tar zxvf DirectFB-examples-1.0.0.tar.gz [PC ~/directfb]$ ls DirectFB-1.0.1 DirectFB-examples-1.0.0 DirectFB-1.0.1.tar.gz DirectFB-examples-1.0.0.tar.gz
2. 準備
DirectFBのクロスビルドには、様々なクロス開発パッケージが必要となってきます。
弊社で提供しているパッケージの他に、次のパッケージをインストールしておきます。
libfreetype6-arm-cross
libfreetype6-dev-arm-cross
libjpeg62-arm-cross
libjpeg62-dev-arm-cross
libpng12-0-arm-cross
libpng12-dev-arm-cross
パッケージの作成についての詳細は、「クロス開発用ライブラリをインストールする方法」を参照してください。
また、通常(ホスト用)のlibfreetype6-devパッケージがインストールされているとDirectFBのビルドがよりスムースに行きます。以下のようにインストールしてください。
[PC ~/directfb]$ sudo apt-get install libfreetype6-dev
次にビルドスクリプトを取得してください。
[PC ~/directfb]$ wget https://download.atmark-techno.com/misc/demos/directfb-howto-v2/build-directfb-for-arm.sh [PC ~/directfb]$ wget https://download.atmark-techno.com/misc/demos/directfb-howto-v2/prepare-directfb-example-for-arm.sh [PC ~/directfb]$ wget https://download.atmark-techno.com/misc/demos/directfb-howto-v2/install-directfb-for-arm.sh
スクリプトを実行可能にします。
[PC ~/directfb]$ chmod 755 build-directfb-for-arm.sh [PC ~/directfb]$ chmod 755 prepare-directfb-example-for-arm.sh [PC ~/directfb]$ chmod 755 install-directfb-for-arm.sh
DirectFBとDirectFB-examplesのディレクトリ名を変更します。
[PC ~/directfb]$ mv DirectFB-1.0.1 DirectFB [PC ~/directfb]$ mv DirectFB-examples-1.0.0 DirectFB-examples
[PC ~/directfb]$ ls DirectFB build-directfb-for-arm.sh DirectFB-1.0.1.tar.gz install-directfb-for-arm.sh DirectFB-examples prepare-directfb-example-for-arm.sh DirectFB-examples-1.0.0.tar.gz
これで準備は完了です。
3. DirectFBのビルド
DirectFBのビルドを行っていきましょう。build-directfb-for-arm.sh
スクリプトを使って行います。
[PC ~/directfb]$ ./build-directfb-for-arm.sh : : ---- Configuring directfb ... ---- : : ---- Making directfb ... (will take some time) ---- : : ---- Installing directfb to temp directory ... ---- : : /usr/bin/install -c -m 644 'directfb.pc' '/home/hoge/directfb/DirectFB/install/usr/local/lib/pkgconfig/directfb.pc' /usr/bin/install -c -m 644 'directfb-internal.pc' '/home/hoge/directfb/DirectFB/install/usr/local/lib/pkgconfig/directfb-internal.pc' make[2]: ディレクトリ `/home/hoge/directfb/DirectFB' から出ます make[1]: ディレクトリ `/home/hoge/directfb/DirectFB' から出ます make: ディレクトリ `/home/hoge/directfb/DirectFB' から出ます [PC ~/directfb]$
4.DirectFB-examplesの準備
次はDirectFB-examplesの準備です。
prepare-directfb-example-for-arm.sh
スクリプトを使います。
[PC ~/directfb]$ ./prepare-directfb-example-for-arm.sh ---- Configuring directfb examples ... ---- : : config.status: creating src/Makefile config.status: creating src/df_knuckles/Makefile config.status: creating src/df_neo/Makefile config.status: creating src/spacedream/Makefile config.status: executing depfiles command [PC ~/directfb]$
5. インストールアーカイブの作成
install-directfb-for-arm.sh
スクリプトを使用してアーカイブを作成します。
[PC ~/directfb]$ ./install-directfb-for-arm.sh ---- install: directfb --> add-to-rootfs ---- ---- install: directfb examples --> add-to-rootfs ---- : : ---- install: setup script --> add-to-rootfs ---- ---- archive: add-to-rootfs --> add-to-rootfs.tar.gz ---- [PC ~/directfb]$ ls DirectFB DirectFB-examples-1.0.0.tar.gz build-directfb-for-arm.sh DirectFB-1.0.1.tar.gz add-to-rootfs install-directfb-for-arm.sh DirectFB-examples add-to-rootfs.tar.gz prepare-directfb-example-for-arm.s
ここで作成された「add-to-rootfs.tar.gz」がインストールアーカイブとなります。
6. カーネルの変更
Armadillo-240の場合、カーネルのコンフィグレーションでフレームバッファのコンソールサポートを有効にします。
※今回はlinux-2.6.12.3-a9-11を使用することとします。
Device Drivers ---> Character devices ---> [*] Virtual terminal Graphics support ---> Console display driver support ---> [ ] VGA text console < > MDA text console (dual-headed) (EXPERIMENTAL) <*> Framebuffer Console support [*] Select compiled-in fonts [*] VGA 8x8 font [*] VGA 8x16 font
Armadillo-9でマウスを使う場合は、以下のように設定する必要があります。
Device Drivers --> Input device support --> --- Userland interface <span class="input"><*> Event interface</span>
7. イメージの作成
カーネルの設定を変更したら、イメージの作成を行います。
※イメージの作成方法はソフトウェアマニュアル等を参照してください。
[PC ~]$ ls atmark-dist-20071018 directfb linux-2.6.12.3-a9-11 [PC ~]$ cd atmark-dist-20071018 [PC ~/atmark-dist-20071018]$ make
次にデフォルトのromfsディレクトリに先ほど作成したadd-to-rootfs.tar.gzを展開します。
そして再度イメージを作成しなおします。
[PC ~/atmark-dist-20071018]$ cd romfs [PC ~/atmark-dist-20071018/romfs]$ tar zxvf ../../directfb/add-to-rootfs.tar.gz [PC ~/atmark-dist-20071018/romfs]$ cd .. [PC ~/atmark-dist-20071018]$ make romfs image [PC ~/atmark-dist-20071018]$ ls images linux.bin linux.bin.gz romfs.img romfs.img.gz
作成したlinux.bin.gzとromfs.img.gzをArmadilloに書き込みます。
8. 動作確認
イメージの書き込みが終わったら、Armadilloを起動させ
ログインしましょう。
ログイン後、次のコマンドを入力し、setupさせます。
[armadillo ~]# ./directfb_setup.sh
これでDirectFBが動作する環境は整いました。
df_windowを実行したときの画面です。
df_dokでベンチマークを実行した結果です。
[armadillo ~]# df_dok =======================| DirectFB 1.0.1 |======================= (c) 2001-2007 The DirectFB Organization (directfb.org) (c) 2000-2004 Convergence (integrated media) GmbH ------------------------------------------------------------ : : Benchmarking with 256x256 in 16bit mode... (16bit) Anti-aliased Text 3.135 secs ( 26.411 KChars/sec) Anti-aliased Text (blend) 3.145 secs ( 4.578 KChars/sec) Fill Rectangle 3.054 secs ( 32.188 MPixel/sec) Fill Rectangle (blend) 7.168 secs ( 0.914 MPixel/sec) Fill Rectangles [10] 4.028 secs ( 32.540 MPixel/sec) Fill Rectangles [10] (blend) 71.168 secs ( 0.920 MPixel/sec) Fill Triangles 3.127 secs ( 25.149 MPixel/sec) Fill Triangles (blend) 3.611 secs ( 0.907 MPixel/sec) Draw Rectangle 3.015 secs ( 2.918 KRects/sec) Draw Rectangle (blend) 3.208 secs ( 0.436 KRects/sec) Draw Lines [10] 3.017 secs ( 10.938 KLines/sec) Draw Lines [10] (blend) 3.473 secs ( 2.015 KLines/sec) Fill Spans 3.172 secs ( 28.925 MPixel/sec) Fill Spans (blend) 7.204 secs ( 0.909 MPixel/sec) Blit 3.277 secs ( 15.999 MPixel/sec) Blit colorkeyed 3.737 secs ( 7.014 MPixel/sec) Blit destination colorkeyed 5.151 secs ( 2.544 MPixel/sec) Blit with format conversion 5.700 secs ( 2.299 MPixel/sec) Blit with colorizing 4.378 secs ( 1.496 MPixel/sec) Blit from 32bit (blend) 5.747 secs ( 1.140 MPixel/sec) Blit from 32bit (blend) with colorizing 13.146 secs ( 0.498 MPixel/sec) Stretch Blit 4.658 secs ( 13.926 MPixel/sec) Stretch Blit colorkeyed 11.735 secs ( 5.527 MPixel/sec)