警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : DirectFBのビルド

対象製品: Armadillo-500Armadillo-9Armadillo-240

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 http://download.atmark-techno.com/misc/demos/directfb-howto-v2/build-directfb-for-arm.sh
[PC ~/directfb]$ wget http://download.atmark-techno.com/misc/demos/directfb-howto-v2/prepare-directfb-example-for-arm.sh
[PC ~/directfb]$ wget http://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-240のカーネルイメージのサイズが大きくなり過ぎて、フラッシュメモリに保存できなくなる可能性があります。フラッシュメモリのカーネルリージョンを拡張するには、「フラッシュメモリのパーティションテーブルの変更」を参考にしてください。

Armadillo-9でマウスを使う場合は、以下のように設定する必要があります。


Device Drivers -->
  Input device support -->
    --- Userland interface
    <*> Event interface

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_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)
カテゴリ: