at_takuya.sasaki
2014年5月23日 19時57分
Armadillo-840はタッチスクリーンライブラリにマルチタッチ対応のmtdevを採用しています。 しかし抵抗膜式などのタッチスクリーンコントローラをArmadillo-840に接続する際には、mtdevではなく シングルタッチ向けのtslibを使いたくなるケースが出てきます。
ここでは、mtdevではなくtslibを使ってQtのアプリケーションを実行するまでの手順を記述します。
---注意---
本記事は、Armadillo-840液晶モデル開発セットでの動作を想定したものではありません。
以下のタッチスクリーンコントローラ(TSC2007)を接続した環境で、試しております。
http://www.tij.co.jp/product/jp/tsc2007
(TSC2007を動かすためのカーネルの設定がすでに行われていることが前提となっています。)
1. ユーザーランドのコンフィギュレーションを実施します。
atmark@atde5:~/840/atmark-dist$ make menuconfig
Userland Configuration
Miscellaneous Applications --->
[*] tslib-utils ←チェックを入れる
[*] ts_calibrate (NEW) ←チェックを入れる
2. Qt実行時に自動的にlibqevdevtouchプラグインがロードされてしまうので、 /run/udev/data配下にファイルを作るスクリプトを実行しないように編集します。
atmark@atde5:~/840/atmark-dist$ vi vendors/AtmarkTechno/Armadillo-840/etc/udev/rules.d/z70-input-id.rules
4行目をコメントアウト
# RUN+="/etc/config/gen-input-run-data.sh %E{ACTION} %E{DEVPATH}"
3. tslib用プラグインファイル(libqtslibplugin.so)をATDE5にコピーします。
libqtslibplugin.soのビルド方法は長くなるので今回は省略。
libqtslibplugin.soは以下からダウンロードしてください。 (アップロードできる拡張子の関係上、zipに圧縮してますので、ダウンロード後解凍してください) libqtslibplugin.zip
atmark@atde5:~$ cp libqtslibplugin.so /usr/arm-linux-gnueabihf/lib/qt5/plugins/generic/
4. libqtslibplugin.soをAtmark Distに取り込むようにQtのMakefileを修正
atmark@atde5:~/840/atmark-dist$ vi user/qt5/Makefile
32行目に以下の行を追加
generic/libqtslibplugin.so \
5. tslibに必要設定ファイルを、Armadillo-440向けディレクトリからコピー
atmark@atde5:~/840/atmark-dist$ cp vendors/AtmarkTechno/Armadillo-440/etc/ts.conf vendors/AtmarkTechno/Armadillo-840/etc/
6. Debianパッケージのtslibライブラリをダウンロードして、展開
atmark@atde5:~/840/atmark-dist$ wget http://ftp.jp.debian.org/debian/pool/main/t/tslib/libts-0.0-0_1.0-11_armhf.deb
atmark@atde5:~/840/atmark-dist$ dpkg -X libts-0.0-0_1.0-11_armhf.deb vendors/AtmarkTechno/Armadillo-840/prebuild/arm-linux-gnueabihf/
7. 不要なディレクトリを削除
atmark@atde5:~/840/atmark-dist$ rm -rf vendors/AtmarkTechno/Armadillo-840/prebuild/arm-linux-gnueabihf/usr/share/
8. romfsイメージ作成時にtslibに必要なライブラリをコピーするように修正
atmark@atde5:~/840/atmark-dist$ vi vendors/AtmarkTechno/Armadillo-840/Makefile
200行目に以下の行を追加
cp -a $(PREBUILD_PRODUCTDIR)/usr/lib/$(CROSS_COMPILE:-=)/ts0/ $(ROMFSDIR)/usr/lib/
9. ビルドして、ユーザーランドのイメージをArmadilloに書き込みます。
atmark@atde5:~/840/atmark-dist$ make
10. Armadilloを起動します。
Qtサンプルアプリケーション(photoviewer)が起動していれば、一度プロセスを終了します。
[root@armadillo840-0 (ttySC2) ~]# killall qmlscene
11. キャリブレーションを実行します。
exportしている環境変数は、起動のたびに指定するのが面倒であれば、/etc/profile.d にexportするスクリプトを定義するとよいでしょう。
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_TSDEVICE=/dev/input/event0
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_PLUGINDIR=/usr/lib/ts0
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_CALIBFILE=/etc/config/pointercal
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_FBDEVICE=/dev/fb1 ←LCDを示すデバイスを指定してください。
[root@armadillo840-0 (ttySC2) ~]# ts_calibrate
12. キャリブレーション結果が/etc/config/pointercalに保存されるので、次回起動時にも有効になるようにROMに保存します。
[root@armadillo840-0 (ttySC2) ~]# flatfsd -s
13. Qtのサンプルアプリケーションを起動します。
tslibを使うためには、コマンドの最後にある-plugin以降の指定が必要です。
[root@armadillo840-0 (ttySC2) ~]# qmlscene /usr/share/qt5/photoviewer/photoviewer.qml -plugin tslib:/dev/input/event0
以上