1.首先從網上下載的tslib-1.4.tar.gz
2.解壓tar xvzf tslib-1.4.tar.gz ; cd tslib
3.生成configure,這裡比一般的開源項目少做一步,要先運行解壓目錄下的腳本
./autogen.sh
4.用configure 生成Makefile.
這裡按匯森移植規範移輸出到output目錄當中.
即有如下目錄結構
hxy_project
|
+-- docs
|
+-- output
| |
| + -- arm-linux #項目發布目錄
|
+--- libs
|
+-- tslib
生成腳本
./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux ac_cv_func_malloc_0_nonnull=yes --enable-inputapi=no
其中ac_cv_func_malloc_0_nonnull=yes 是為解決如下編譯錯誤設置的
ts_test.o: In function `main': ts_test.c:(.text+0x1d8): undefined reference to `rpl_malloc' fbutils.o: In function `open_framebuffer': fbutils.c:(.text+0xa20): undefined reference to `rpl_malloc' collect2: ld returned 1 exit status |
--enable-inputapi=no. 是為了解決運行中提示ts_open:Inappropriate ioctol for device,它表示
即不使用ioctl來控制觸摸屏。 但是我在幾個板沒有碰到這樣提示--enable-inputapi=no
即不使用ioctl來控制觸摸屏。 但是我在幾個板沒有碰到這樣提示--enable-inputapi=no
5.編譯安裝
make
make install-strip #安裝strip後的庫
#make install #安裝沒有strip庫版本.
配置與測試tslib
tslib只是應用級的一個程序庫,只是用來封裝底層的觸摸屏驅動的操作,以一個統一接口來給其它應用程序使用.因此tslib正常工作的前提是開發板上的觸摸屏驅動能正常工作.另外觸摸屏的效果往往需要在LCD上顯示,因此tslib也需要開發板上的FrameBuffer驅動正常工作.
測試FrameBuffer 驅動的方法參見我的博文
ARM開發板常見的觸摸屏驅動分為兩大類,一類是模擬HP 3600的調用接口.這類驅動一般使用/dev/h3600_tsraw 的設備結點文件.早期開發板一般都是這一類,
另外一類是採用Linux 2.6 輸入設備接口的驅動。 這類驅動會將觸摸屏驅動設計成一個標準輸入事件設備(linux input layer event interface),所有事件輸入設備結點命名為/dev/input/eventN (N>=0).
一般都是/dev/input/event0.而且驅動向應用程序發送標準的struct event 結構。
ARM板使用哪種驅動接口.要參考產商的文檔或直接查看已經成功的程序使用哪一個。
tslib 運行時需要一個關鍵的ts.conf來設置採用哪一種驅動。 另外還需要設定一些環境變量。 當編譯完tslib安裝後,在安裝目錄的etc下有一個ts.conf的模板。 如果使用h3600設備,則使用module_raw h3600,如果是使用輸入設備,則使用module_raw input.
#ts.conf template module_raw input module pthres pmin=1 |
注意配置項要頂格寫,如果有空格,tslib將會u有段錯誤。 這是它的bug.
正常運行tslib 也需要配置一系列環境變量
#export TSLIB_ROOT=/usr/local/tslib |
將其放入ARM開發的Flash或NFS路徑下。 可以測試運行安幾裝目錄下的bin的幾個測試程序
運行ts_test.將會在屏幕出現如下界面。 點擊控制台將會有輸出。
全站熱搜
留言列表