大家好,我是情報小哥!
本文為【從單片機步入嵌入式Linux】系列文章的第六篇,前面幾篇文章從uboot->內(nèi)核->根文件系統(tǒng),從基本的移植到燒錄,算是比較完整的介紹了Linux系統(tǒng)的一個全貌,并且從相對比較底層的角度跟大家一起來構(gòu)建了一個比較粗糙的嵌入式Linux平臺。
以后遇到其他的平臺都是類似的做法,燒錄的形式和相關(guān)配置原理上都大同小異。因為我們本次的目的是要移植Qt5.6,那么觸摸屏是肯定要玩起來的,比較方便的就是使用tslib庫來配合使用了。
01
何為tslib

前面在移植Linux內(nèi)核的時候,已經(jīng)把touch觸摸驅(qū)動編譯進了內(nèi)核了,那么上電便會自動加載相應(yīng)的驅(qū)動。
那很多人該疑問了,有了驅(qū)動不就可以了嗎?為何還要弄一個tslib庫,可以直接進入tslib庫的官網(wǎng)(訪問:http://www.tslib.org/)了解一下它,進入官網(wǎng)后便會看到下圖:

明顯的可以看到其就是一個用于處理濾波觸摸屏事件的C庫,一款基于LGPLv2的免費軟件,為觸摸屏提供一個適配器層,可以完成校準,消抖等功能,從而為上層應(yīng)用程序提供一個統(tǒng)一的接口,比如QT,MiniGUI等都可以調(diào)用相應(yīng)的接口進行訪問。

所以tslib并不屬于驅(qū)動層, 而是一個應(yīng)用軟件的C庫。
02
安裝tslib

tslib的安裝還是比較簡單的,通過在PC上進行交叉編譯,并安裝到相應(yīng)的文件夾中,然后把安裝的文件移植到板級平臺上,配置好相應(yīng)的環(huán)境變量即部署好了tslib庫使用環(huán)境。
下面小哥簡單描述一下該過程 :
1、在進行tslib交叉編譯之前需要確認編譯環(huán)境是否安裝好autoconf、automake、libtool,這三個東西都屬于automake工具,主要是用于配置腳本和自動創(chuàng)建makefile等,而tslib編譯所采用的就是這種方式。
如果沒有安裝就采用如下命令進行安裝:
1sudo apt-get install autoconf automake libtool

2、這里我們采用常用的tslib-1.4,該源文件可以直接在tslib官網(wǎng)上進行下載。
下載下來一般都是壓縮文件,直接解壓以后執(zhí)行如下命令:
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
執(zhí)行autogen.sh腳本從而生成./configure腳本,然后通過執(zhí)行configure腳本用于指定安裝路徑等參數(shù),第三步命令則是編譯tslib庫,然后采用make install進行安裝,這樣tslib便會安裝到第二步所指定的安裝路徑。
一切執(zhí)行順利便可以在安裝路徑中看到如下內(nèi)容:(此過程與busybox安裝其實是類似的)

3、因為之前加載的觸摸屏驅(qū)動是輸入子設(shè)備,這樣在tslib安裝目錄中的etc目錄下修改ts.conf文件,使得其支持input輸入子系統(tǒng),然后保存退出,這樣tslib安裝文件就準備好了。

4、下面我們把該touchroot文件夾進行壓縮轉(zhuǎn)移到之前制作好的nfs網(wǎng)絡(luò)共享文件系統(tǒng)路徑下(NFS網(wǎng)絡(luò)文件系統(tǒng)設(shè)置和使用查找往期文章)來進行測試,并進行解壓。
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
雖然已經(jīng)把安裝的文件放到了板級根文件系統(tǒng)中,那怎樣讓Linux系統(tǒng)中運行的應(yīng)用程序找到所安裝的tslib目錄呢?
一種是應(yīng)用程序直接以絕對路徑進行查找,這樣太過死板,而另外一種則是配置好預(yù)定義的環(huán)境變量,應(yīng)用程序只需要查找系統(tǒng)的環(huán)境變量既可以找到對應(yīng)的tslib安裝路徑。(環(huán)境變量等知識可以查找往期文章)
5、在根文件系統(tǒng)中的etc目錄中創(chuàng)建profile文件,并進行如下環(huán)境變量配置,系統(tǒng)在啟動過程中便會執(zhí)行profile文件中的內(nèi)容,從而設(shè)置好相應(yīng)的環(huán)境變量,以后應(yīng)用程序便能找到安裝路徑了。

如果一切順利,便可以執(zhí)行tslib中bin文件中的測試程序來檢測是否安裝成功。
比如ts_print測試觸摸屏驅(qū)動是否正常,運行應(yīng)用程序以后,然后點擊觸摸屏,即可輸出相應(yīng)的坐標數(shù)據(jù):

還有ts_calibrate程序主要用于校準,一運行屏幕便會出現(xiàn)如下畫面。

點擊屏幕上的提示點,即可完成校準。

同時還會在環(huán)境變量所配置的生成校準文件的路徑下,生成校準文件-pointercal供每次啟動使用,這樣用戶就不需要每次都進行校準了。

那么tslib庫的安裝和部署就暫時講到這里,其他平臺也都大同小異,主要是一些配置根據(jù)對應(yīng)的平臺和使用情況進行修改即可。
同時如果對觸摸這塊比較感興趣還可以研究一下tslib開源代碼進行原理性學(xué)習(xí),一些算法還是可以借鑒一下的~
**最 后 **
好了,這里小哥就介紹了一下tslib觸摸庫的簡單安裝與測試的相關(guān)知識,希望本文能夠?qū)δ阌袔椭?,本系列文件還會持續(xù)更新。
-
單片機
+關(guān)注
關(guān)注
6072文章
45267瀏覽量
661158 -
Linux
+關(guān)注
關(guān)注
88文章
11581瀏覽量
217170 -
文件系統(tǒng)
+關(guān)注
關(guān)注
0文章
298瀏覽量
20752
發(fā)布評論請先 登錄
觸摸屏與單片機的通信實現(xiàn)
單片機步入嵌入式Linux連接過程中幾個地址的區(qū)分與理解
嵌入式Linux下一種新的觸摸屏定標方法的研究
嵌入式Linux觸摸屏在漆包線檢測系統(tǒng)中的應(yīng)用
基于嵌入式技術(shù)的智能儀器觸摸屏接口設(shè)計
ARM嵌入式觸摸屏的設(shè)計
基于I2C的嵌入式Linux多點觸摸屏幕驅(qū)動系統(tǒng)設(shè)計
單片機or嵌入式linux
單片機轉(zhuǎn)嵌入式Linux的思考
QT之嵌入式Linux下觸摸屏上隱藏鼠標指針的學(xué)習(xí)筆記
是否要從單片機轉(zhuǎn)為嵌入式Linux
嵌入式Linux的觸摸屏圖形組態(tài)軟件的研究

單片機步入嵌入式Linux之觸摸屏與tslib
評論