大家好,我是情報小哥!
本文為【從單片機步入嵌入式Linux】系列文章的第六篇,前面幾篇文章從uboot->內核->根文件系統,從基本的移植到燒錄,算是比較完整的介紹了Linux系統的一個全貌,并且從相對比較底層的角度跟大家一起來構建了一個比較粗糙的嵌入式Linux平臺。
以后遇到其他的平臺都是類似的做法,燒錄的形式和相關配置原理上都大同小異。因為我們本次的目的是要移植Qt5.6,那么觸摸屏是肯定要玩起來的,比較方便的就是使用tslib庫來配合使用了。
01
何為tslib
前面在移植Linux內核的時候,已經把touch觸摸驅動編譯進了內核了,那么上電便會自動加載相應的驅動。
那很多人該疑問了,有了驅動不就可以了嗎?為何還要弄一個tslib庫,可以直接進入tslib庫的官網(訪問:http://www.tslib.org/)了解一下它,進入官網后便會看到下圖:
明顯的可以看到其就是一個用于處理濾波觸摸屏事件的C庫,一款基于LGPLv2的免費軟件,為觸摸屏提供一個適配器層,可以完成校準,消抖等功能,從而為上層應用程序提供一個統一的接口,比如QT,MiniGUI等都可以調用相應的接口進行訪問。
所以tslib并不屬于驅動層, 而是一個應用軟件的C庫。
02
安裝tslib
tslib的安裝還是比較簡單的,通過在PC上進行交叉編譯,并安裝到相應的文件夾中,然后把安裝的文件移植到板級平臺上,配置好相應的環境變量即部署好了tslib庫使用環境。
下面小哥簡單描述一下該過程 :
1、在進行tslib交叉編譯之前需要確認編譯環境是否安裝好autoconf、automake、libtool,這三個東西都屬于automake工具,主要是用于配置腳本和自動創建makefile等,而tslib編譯所采用的就是這種方式。
如果沒有安裝就采用如下命令進行安裝:
1sudo apt-get install autoconf automake libtool
2、這里我們采用常用的tslib-1.4,該源文件可以直接在tslib官網上進行下載。
下載下來一般都是壓縮文件,直接解壓以后執行如下命令:
1./autogen.sh
2./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=/home/book/WorkSpace/Qt/src/arm-linux-gcc-4.4.3/opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-gcc CXX=/home/book/WorkSpace/Qt/src/arm-linux-gcc-4.4.3/opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-g++ -prefix=/home/book/WorkSpace/Qt/src/tslib-1.4/touch_root
3make CROSS_COMPILE=/home/book/WorkSpace/Qt/src/arm-linux-gcc-4.4.3/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux- ARCH=arm -j8
4make install CROSS_COMPILE=/home/book/WorkSpace/Qt/src/arm-linux-gcc-4.4.3/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux- ARCH=arm -j8
執行autogen.sh腳本從而生成./configure腳本,然后通過執行configure腳本用于指定安裝路徑等參數,第三步命令則是編譯tslib庫,然后采用make install進行安裝,這樣tslib便會安裝到第二步所指定的安裝路徑。
一切執行順利便可以在安裝路徑中看到如下內容:(此過程與busybox安裝其實是類似的)
3、因為之前加載的觸摸屏驅動是輸入子設備,這樣在tslib安裝目錄中的etc目錄下修改ts.conf文件,使得其支持input輸入子系統,然后保存退出,這樣tslib安裝文件就準備好了。
4、下面我們把該touchroot文件夾進行壓縮轉移到之前制作好的nfs網絡共享文件系統路徑下(NFS網絡文件系統設置和使用查找往期文章)來進行測試,并進行解壓。
1tar zcvf touch_root.tar.gz touch_root/
2mkdir ../../busybox/usr/local
3cp touch_root.tar.gz ../../busybox/usr/local/
4cd ../../busybox/usr/local/
5tar zxvf touch_root.tar.gz
雖然已經把安裝的文件放到了板級根文件系統中,那怎樣讓Linux系統中運行的應用程序找到所安裝的tslib目錄呢?
一種是應用程序直接以絕對路徑進行查找,這樣太過死板,而另外一種則是配置好預定義的環境變量,應用程序只需要查找系統的環境變量既可以找到對應的tslib安裝路徑。(環境變量等知識可以查找往期文章)
5、在根文件系統中的etc目錄中創建profile文件,并進行如下環境變量配置,系統在啟動過程中便會執行profile文件中的內容,從而設置好相應的環境變量,以后應用程序便能找到安裝路徑了。
如果一切順利,便可以執行tslib中bin文件中的測試程序來檢測是否安裝成功。
比如ts_print測試觸摸屏驅動是否正常,運行應用程序以后,然后點擊觸摸屏,即可輸出相應的坐標數據:
還有ts_calibrate程序主要用于校準,一運行屏幕便會出現如下畫面。
點擊屏幕上的提示點,即可完成校準。
同時還會在環境變量所配置的生成校準文件的路徑下,生成校準文件-pointercal供每次啟動使用,這樣用戶就不需要每次都進行校準了。
那么tslib庫的安裝和部署就暫時講到這里,其他平臺也都大同小異,主要是一些配置根據對應的平臺和使用情況進行修改即可。
同時如果對觸摸這塊比較感興趣還可以研究一下tslib開源代碼進行原理性學習,一些算法還是可以借鑒一下的~
**最 后 **
好了,這里小哥就介紹了一下tslib觸摸庫的簡單安裝與測試的相關知識,希望本文能夠對你有幫助,本系列文件還會持續更新。
-
單片機
+關注
關注
6023文章
44376瀏覽量
628422 -
Linux
+關注
關注
87文章
11123瀏覽量
207919 -
文件系統
+關注
關注
0文章
280瀏覽量
19831
發布評論請先 登錄
相關推薦
評論