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

單片機(jī)步入嵌入式Linux連接過(guò)程中幾個(gè)地址的區(qū)分與理解
嵌入式Linux下一種新的觸摸屏定標(biāo)方法的研究
單片機(jī)和嵌入式LINUX開(kāi)發(fā)的那點(diǎn)事兒
嵌入式Linux觸摸屏在漆包線檢測(cè)系統(tǒng)中的應(yīng)用
基于嵌入式技術(shù)的智能儀器觸摸屏接口設(shè)計(jì)

ARM嵌入式觸摸屏的設(shè)計(jì)

基于I2C的嵌入式Linux多點(diǎn)觸摸屏幕驅(qū)動(dòng)系統(tǒng)設(shè)計(jì)

單片機(jī)or嵌入式linux

單片機(jī)轉(zhuǎn)嵌入式Linux的思考

QT之嵌入式Linux下觸摸屏上隱藏鼠標(biāo)指針的學(xué)習(xí)筆記

是否要從單片機(jī)轉(zhuǎn)為嵌入式Linux

基于嵌入式LCD的觸摸屏的設(shè)計(jì)

嵌入式Linux的觸摸屏圖形組態(tài)軟件的研究

評(píng)論