ブログ

Armadillo-840でtslibを使う方法

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

以上