[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 メーリングリストの案内