[Armadillo:05071] 500FX でのX
Tomohiko Imachi
email@hidden
2010年 4月 9日 (金) 17:01:08 JST
井町と申します.
Armadillo-500 FX で X アプリ開発環境構築に成功いたしましたので,どの程度
参考になるかは分かりませんが,一応報告いたします.
SSD 起動の Debian 環境では,evdev を使えば X はタッチスクリーンで動き
ますし,セルフビルド環境の構築も容易ですが,クリックイベントにいささか
難があり,またシステム終了時に shutdown が必要になります.
初期状態(Armadillo-500-FX.dev)であれば,クリックイベントも含め全て
正常に動きます.
なので,SSD 起動環境で開発したものを,ほぼ初期状態の RAMDISK 起動環境で
動かすことを考えました.
足りないライブラリ等は,SSD からシンボリックリンクで引っ張っています.
よって,基本方針は下記:
・Armadillo-500-FX.dev を,ほぼそのまま使用.
a500fx-demo のみ外す.
・開発は SSD 起動環境でのセルフビルドで行う.
私の場合,g++ & gtkmm.
・実運用は,RAMDISK 起動環境で行う.
以下,具体的手順のメモです.
多少でもご参考になれば幸いです.
======================================================================
1 atmark-dist で,Armadillo-500-FX.dev を make clean; make して反映.
修正は下記のみ.
==================================================
Customize Vendor/User Settings
--------------------------------------------------
Miscellaneous Applications --->
[ ] a500fx-demo ← チェックを外す
==================================================
起動して,何もない X 画面が表示されることを確認.
2 SSD 起動で X が動く環境を作る.
ひとまず,evdev で X を動かす.
(SSD への Debian インストールと起動設定)
Armadillo-500 FX 液晶モデルソフトウェアマニュアル
6.USB SSD システム構築
(X のインストール)
http://armadillo.atmark-techno.com/howto/debian-x-window
http://lists.atmark-techno.com/pipermail/armadillo/2010-January/004900.html
http://lists.atmark-techno.com/pipermail/armadillo/2010-January/004903.html
3 SSD 起動環境に,セルフビルド環境を作る.
例えば g++ & gtkmm の環境ならば,下記.
==================================================
# apt-get install g++ libgtkmm-2.4-dev
# apt-get install ttf-sazanami-gothic
# apt-get install ttf-sazanami-mincho
# apt-get install ttf-kochi-gothic
# apt-get install ttf-kochi-mincho
# apt-get install x-ttcidfont-conf
==================================================
ひとまずこの環境でビルドと動作確認を可能な範囲で行う.
例えば g++ & gtkmm の環境ならば,下記 URL にあるサンプルプログラムは
かなりのものが動く.
■ gtkmm 入門
http://www.hakodate-ct.ac.jp/~tokai/tokai/gtkmm/
evdev 環境ではボタンのクリックができないが,ボタンへのフォーカス
だけはしてくれるので,ボタン上をタッチしてから Enter キー(キーパッド
3段目中央のボタン)を押すことで,試験目的ならある程度は対処可能.
以下では,ここで動作確認が取れたものを,RAMDISK 起動環境で動かせる
ようにする.
4 RAMDISK から起動する.
hermit> clearenv
hermit> boot
SSD は /mnt にマウントしておく.
5 必要なライブラリのリストを作る.
/mnt 配下にある,3で作成したソフトウェアを動かしてみる.
おそらく事前に export DISPLAY=:0.0 が必要.
エラーメッセージで足りないライブラリ等が指摘されるので,それを
RAMDISK 起動環境にも用意するのだが,容量的に実体を置けないので,
SSD からのシンボリックリンクを張る.
順次メモしつつ /mnt 配下のものを下記のようにリンクしていく.
==================================================
# ln -s /mnt/usr/lib/libgtkmm-2.4.so.1 /usr/lib
==================================================
これをエラーが出なくなるまで繰り返し,必要なライブラリ等のリストを作る.
私の環境では下記.
/mnt/etc/gtk-2.0
/mnt/usr/lib/gtk-2.0
/mnt/usr/lib/libgtkmm-2.4.so.1
/mnt/usr/lib/libgdkmm-2.4.so.1
/mnt/usr/lib/libatkmm-1.6.so.1
/mnt/usr/lib/libpangomm-1.4.so.1
/mnt/usr/lib/libglibmm-2.4.so.1
/mnt/usr/lib/libsigc-2.0.so.0
/mnt/usr/lib/libstdc++.so.6
/mnt/usr/lib/libgtk-x11-2.0.so.0
/mnt/usr/lib/libgdk-x11-2.0.so.0
/mnt/usr/lib/libatk-1.0.so.0
/mnt/usr/lib/libgdk_pixbuf-2.0.so.0
/mnt/usr/lib/libpangocairo-1.0.so.0
/mnt/usr/lib/libXext.so.6
/mnt/usr/lib/libXrender.so.1
/mnt/usr/lib/libXinerama.so.1
/mnt/usr/lib/libXi.so.6
/mnt/usr/lib/libXrandr.so.2
/mnt/usr/lib/libXcursor.so.1
/mnt/usr/lib/libXfixes.so.3
/mnt/usr/lib/libcairo.so.2
/mnt/usr/lib/libpng12.so.0
/mnt/usr/lib/libjpeg.so.62
/mnt/usr/share/fonts/truetype/sazanami
/mnt/usr/share/fonts/truetype/kochi
6 atmark-dist の romfs に変更を反映させる.
atmark-dist の romfs に,上記シンボリックリンク等の変更を反映させる.
私の採っている方法は下記のとおり.
1 atmark-dist のディレクトリに,romfs-diff ディレクトリを作り,
その配下に差分のみのディレクトリツリーを構成.
(【参考】参照).
==================================================
$ mkdir romfs-diff
$ mkdir romfs-diff/usr
$ mkdir romfs-diff/usr/lib
$ cd romfs-diff/usr/lib
$ ln -s /mnt/usr/lib/libgtkmm-2.4.so.1
$ ln -s /mnt/usr/lib/libgtk-x11-2.0.so.0
(以下,同様)
==================================================
2 make romfs 後に,romfs-diff の中身をそのまま romfs に上書き.
ただし,シンボリックリンクを破壊しないよう,下記のコマンドで
実施.
==================================================
$ tar cf - -C romfs-diff . | tar xvf - -C romfs
==================================================
3 その後,make image
7 userland を更新して起動.
この環境は TSLIB が機能するので,ボタンクリックも正常に動作する
(はず).
以降は,ビルドは SSD 起動環境で行い,運用は RAMDISK 起動に戻して
行えばよい.
以上.
================================================================================
【参考】私の環境での romfs-diff の内容
--------------------------------------------------------------------------------
etc/init.d/rc.local と etc/profile のみファイルの内容変更.
他はシンボリックリンク.
romfs-diff/
|-- etc
| |-- gtk-2.0 -> /mnt/etc/gtk-2.0
| |-- init.d
| | `-- rc.local
| `-- profile
`-- usr
|-- lib
| |-- gtk-2.0 -> /mnt/usr/lib/gtk-2.0
| |-- libXcursor.so.1 -> /mnt/usr/lib/libXcursor.so.1
| |-- libXext.so.6 -> /mnt/usr/lib/libXext.so.6
| |-- libXfixes.so.3 -> /mnt/usr/lib/libXfixes.so.3
| |-- libXi.so.6 -> /mnt/usr/lib/libXi.so.6
| |-- libXinerama.so.1 -> /mnt/usr/lib/libXinerama.so.1
| |-- libXrandr.so.2 -> /mnt/usr/lib/libXrandr.so.2
| |-- libXrender.so.1 -> /mnt/usr/lib/libXrender.so.1
| |-- libatk-1.0.so.0 -> /mnt/usr/lib/libatk-1.0.so.0
| |-- libatkmm-1.6.so.1 -> /mnt/usr/lib/libatkmm-1.6.so.1
| |-- libcairo.so.2 -> /mnt/usr/lib/libcairo.so.2
| |-- libgdk-x11-2.0.so.0 -> /mnt/usr/lib/libgdk-x11-2.0.so.0
| |-- libgdk_pixbuf-2.0.so.0 -> /mnt/usr/lib/libgdk_pixbuf-2.0.so.0
| |-- libgdkmm-2.4.so.1 -> /mnt/usr/lib/libgdkmm-2.4.so.1
| |-- libglibmm-2.4.so.1 -> /mnt/usr/lib/libglibmm-2.4.so.1
| |-- libgtk-x11-2.0.so.0 -> /mnt/usr/lib/libgtk-x11-2.0.so.0
| |-- libgtkmm-2.4.so.1 -> /mnt/usr/lib/libgtkmm-2.4.so.1
| |-- libjpeg.so.62 -> /mnt/usr/lib/libjpeg.so.62
| |-- libpangocairo-1.0.so.0 -> /mnt/usr/lib/libpangocairo-1.0.so.0
| |-- libpangomm-1.4.so.1 -> /mnt/usr/lib/libpangomm-1.4.so.1
| |-- libpng12.so.0 -> /mnt/usr/lib/libpng12.so.0
| |-- libsigc-2.0.so.0 -> /mnt/usr/lib/libsigc-2.0.so.0
| `-- libstdc++.so.6 -> /mnt/usr/lib/libstdc++.so.6
`-- share
`-- fonts
`-- truetype
|-- kochi -> /mnt/usr/share/fonts/truetype/kochi
`-- sazanami -> /mnt/usr/share/fonts/truetype/sazanami
================================================================================
================================================================================
■ etc/init.d/rc.local
SSD を自動マウント.
安全のため Readonly で(電プチ前提).
--------------------------------------------------------------------------------
$ diff romfs/etc/init.d/rc.local romfs-diff/etc/init.d/rc.local
11a12,13
>
> mount -t ext3 -o ro /dev/sda1 /mnt
================================================================================
================================================================================
■ etc/profile
環境変数 DISPLAY を自動設定
--------------------------------------------------------------------------------
$ diff romfs/etc/profile romfs-diff/etc/profile
36a37,39
>
> DISPLAY=:0.0
> export DISPLAY
================================================================================
--
T.Imachi
armadillo メーリングリストの案内