大家好,我是情報(bào)小哥!
本文為【從單片機(jī)步入嵌入式Linux】系列文章的第六篇,前面幾篇文章從uboot->內(nèi)核->根文件系統(tǒng),從基本的移植到燒錄,算是比較完整的介紹了Linux系統(tǒng)的一個(gè)全貌,并且從相對(duì)比較底層的角度跟大家一起來構(gòu)建了一個(gè)比較粗糙的嵌入式Linux平臺(tái)。
以后遇到其他的平臺(tái)都是類似的做法,燒錄的形式和相關(guān)配置原理上都大同小異。因?yàn)槲覀儽敬蔚哪康氖且浦睶t5.6,那么觸摸屏是肯定要玩起來的,比較方便的就是使用tslib庫來配合使用了。
01
何為tslib
前面在移植Linux內(nèi)核的時(shí)候,已經(jīng)把touch觸摸驅(qū)動(dòng)編譯進(jìn)了內(nèi)核了,那么上電便會(huì)自動(dòng)加載相應(yīng)的驅(qū)動(dòng)。
那很多人該疑問了,有了驅(qū)動(dòng)不就可以了嗎?為何還要弄一個(gè)tslib庫,可以直接進(jìn)入tslib庫的官網(wǎng)(訪問:http://www.tslib.org/)了解一下它,進(jìn)入官網(wǎng)后便會(huì)看到下圖:
明顯的可以看到其就是一個(gè)用于處理濾波觸摸屏事件的C庫,一款基于LGPLv2的免費(fèi)軟件,為觸摸屏提供一個(gè)適配器層,可以完成校準(zhǔn),消抖等功能,從而為上層應(yīng)用程序提供一個(gè)統(tǒng)一的接口,比如QT,MiniGUI等都可以調(diào)用相應(yīng)的接口進(jìn)行訪問。
所以tslib并不屬于驅(qū)動(dòng)層, 而是一個(gè)應(yīng)用軟件的C庫。
02
安裝tslib
tslib的安裝還是比較簡單的,通過在PC上進(jìn)行交叉編譯,并安裝到相應(yīng)的文件夾中,然后把安裝的文件移植到板級(jí)平臺(tái)上,配置好相應(yīng)的環(huán)境變量即部署好了tslib庫使用環(huán)境。
下面小哥簡單描述一下該過程 :
1、在進(jìn)行tslib交叉編譯之前需要確認(rèn)編譯環(huán)境是否安裝好autoconf、automake、libtool,這三個(gè)東西都屬于automake工具,主要是用于配置腳本和自動(dòng)創(chuàng)建makefile等,而tslib編譯所采用的就是這種方式。
如果沒有安裝就采用如下命令進(jìn)行安裝:
1sudo apt-get install autoconf automake libtool
2、這里我們采用常用的tslib-1.4,該源文件可以直接在tslib官網(wǎng)上進(jìn)行下載。
下載下來一般都是壓縮文件,直接解壓以后執(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進(jìn)行安裝,這樣tslib便會(huì)安裝到第二步所指定的安裝路徑。
一切執(zhí)行順利便可以在安裝路徑中看到如下內(nèi)容:(此過程與busybox安裝其實(shí)是類似的)
3、因?yàn)橹凹虞d的觸摸屏驅(qū)動(dòng)是輸入子設(shè)備,這樣在tslib安裝目錄中的etc目錄下修改ts.conf文件,使得其支持input輸入子系統(tǒng),然后保存退出,這樣tslib安裝文件就準(zhǔn)備好了。
4、下面我們把該touchroot文件夾進(jìn)行壓縮轉(zhuǎn)移到之前制作好的nfs網(wǎng)絡(luò)共享文件系統(tǒng)路徑下(NFS網(wǎng)絡(luò)文件系統(tǒng)設(shè)置和使用查找往期文章)來進(jìn)行測試,并進(jìn)行解壓。
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)把安裝的文件放到了板級(jí)根文件系統(tǒng)中,那怎樣讓Linux系統(tǒng)中運(yùn)行的應(yīng)用程序找到所安裝的tslib目錄呢?
一種是應(yīng)用程序直接以絕對(duì)路徑進(jìn)行查找,這樣太過死板,而另外一種則是配置好預(yù)定義的環(huán)境變量,應(yīng)用程序只需要查找系統(tǒng)的環(huán)境變量既可以找到對(duì)應(yīng)的tslib安裝路徑。(環(huán)境變量等知識(shí)可以查找往期文章)
5、在根文件系統(tǒng)中的etc目錄中創(chuàng)建profile文件,并進(jìn)行如下環(huán)境變量配置,系統(tǒng)在啟動(dòng)過程中便會(huì)執(zhí)行profile文件中的內(nèi)容,從而設(shè)置好相應(yīng)的環(huán)境變量,以后應(yīng)用程序便能找到安裝路徑了。
如果一切順利,便可以執(zhí)行tslib中bin文件中的測試程序來檢測是否安裝成功。
比如ts_print測試觸摸屏驅(qū)動(dòng)是否正常,運(yùn)行應(yīng)用程序以后,然后點(diǎn)擊觸摸屏,即可輸出相應(yīng)的坐標(biāo)數(shù)據(jù):
還有ts_calibrate程序主要用于校準(zhǔn),一運(yùn)行屏幕便會(huì)出現(xiàn)如下畫面。
點(diǎn)擊屏幕上的提示點(diǎn),即可完成校準(zhǔn)。
同時(shí)還會(huì)在環(huán)境變量所配置的生成校準(zhǔn)文件的路徑下,生成校準(zhǔn)文件-pointercal供每次啟動(dòng)使用,這樣用戶就不需要每次都進(jìn)行校準(zhǔn)了。
那么tslib庫的安裝和部署就暫時(shí)講到這里,其他平臺(tái)也都大同小異,主要是一些配置根據(jù)對(duì)應(yīng)的平臺(tái)和使用情況進(jìn)行修改即可。
同時(shí)如果對(duì)觸摸這塊比較感興趣還可以研究一下tslib開源代碼進(jìn)行原理性學(xué)習(xí),一些算法還是可以借鑒一下的~
**最 后 **
好了,這里小哥就介紹了一下tslib觸摸庫的簡單安裝與測試的相關(guān)知識(shí),希望本文能夠?qū)δ阌袔椭鞠盗形募€會(huì)持續(xù)更新。
-
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634651 -
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209328 -
文件系統(tǒng)
+關(guān)注
關(guān)注
0文章
284瀏覽量
19904
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論