大家好,我是情報小哥!
本文為【從單片機步入嵌入式Linux】系列文章的第六篇,前面幾篇文章從uboot->內(nèi)核->根文件系統(tǒng),從基本的移植到燒錄,算是比較完整的介紹了Linux系統(tǒng)的一個全貌,并且從相對比較底層的角度跟大家一起來構(gòu)建了一個比較粗糙的嵌入式Linux平臺。
以后遇到其他的平臺都是類似的做法,燒錄的形式和相關配置原理上都大同小異。因為我們本次的目的是要移植Qt5.6,那么觸摸屏是肯定要玩起來的,比較方便的就是使用tslib庫來配合使用了。
01
何為tslib
前面在移植Linux內(nèi)核的時候,已經(jīng)把touch觸摸驅(qū)動編譯進了內(nèi)核了,那么上電便會自動加載相應的驅(qū)動。
那很多人該疑問了,有了驅(qū)動不就可以了嗎?為何還要弄一個tslib庫,可以直接進入tslib庫的官網(wǎng)(訪問:http://www.tslib.org/)了解一下它,進入官網(wǎng)后便會看到下圖:
明顯的可以看到其就是一個用于處理濾波觸摸屏事件的C庫,一款基于LGPLv2的免費軟件,為觸摸屏提供一個適配器層,可以完成校準,消抖等功能,從而為上層應用程序提供一個統(tǒng)一的接口,比如QT,MiniGUI等都可以調(diào)用相應的接口進行訪問。
所以tslib并不屬于驅(qū)動層, 而是一個應用軟件的C庫。
02
安裝tslib
tslib的安裝還是比較簡單的,通過在PC上進行交叉編譯,并安裝到相應的文件夾中,然后把安裝的文件移植到板級平臺上,配置好相應的環(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ū)動是輸入子設備,這樣在tslib安裝目錄中的etc目錄下修改ts.conf文件,使得其支持input輸入子系統(tǒng),然后保存退出,這樣tslib安裝文件就準備好了。
4、下面我們把該touchroot文件夾進行壓縮轉(zhuǎn)移到之前制作好的nfs網(wǎng)絡共享文件系統(tǒng)路徑下(NFS網(wǎng)絡文件系統(tǒng)設置和使用查找往期文章)來進行測試,并進行解壓。
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)中運行的應用程序找到所安裝的tslib目錄呢?
一種是應用程序直接以絕對路徑進行查找,這樣太過死板,而另外一種則是配置好預定義的環(huán)境變量,應用程序只需要查找系統(tǒng)的環(huán)境變量既可以找到對應的tslib安裝路徑。(環(huán)境變量等知識可以查找往期文章)
5、在根文件系統(tǒng)中的etc目錄中創(chuàng)建profile文件,并進行如下環(huán)境變量配置,系統(tǒng)在啟動過程中便會執(zhí)行profile文件中的內(nèi)容,從而設置好相應的環(huán)境變量,以后應用程序便能找到安裝路徑了。
如果一切順利,便可以執(zhí)行tslib中bin文件中的測試程序來檢測是否安裝成功。
比如ts_print測試觸摸屏驅(qū)動是否正常,運行應用程序以后,然后點擊觸摸屏,即可輸出相應的坐標數(shù)據(jù):
還有ts_calibrate程序主要用于校準,一運行屏幕便會出現(xiàn)如下畫面。
點擊屏幕上的提示點,即可完成校準。
同時還會在環(huán)境變量所配置的生成校準文件的路徑下,生成校準文件-pointercal供每次啟動使用,這樣用戶就不需要每次都進行校準了。
那么tslib庫的安裝和部署就暫時講到這里,其他平臺也都大同小異,主要是一些配置根據(jù)對應的平臺和使用情況進行修改即可。
同時如果對觸摸這塊比較感興趣還可以研究一下tslib開源代碼進行原理性學習,一些算法還是可以借鑒一下的~
**最 后 **
好了,這里小哥就介紹了一下tslib觸摸庫的簡單安裝與測試的相關知識,希望本文能夠?qū)δ阌袔椭鞠盗形募€會持續(xù)更新。
-
單片機
+關注
關注
6043文章
44622瀏覽量
638532 -
Linux
+關注
關注
87文章
11345瀏覽量
210389 -
文件系統(tǒng)
+關注
關注
0文章
287瀏覽量
19978
發(fā)布評論請先 登錄
相關推薦
觸摸屏與單片機的通信實現(xiàn)
![<b class='flag-5'>觸摸屏</b>與<b class='flag-5'>單片機</b>的通信實現(xiàn)](https://file1.elecfans.com//web2/M00/A6/09/wKgZomUMO2mAYbbOAAAghijn9_I579.jpg)
單片機步入嵌入式Linux連接過程中幾個地址的區(qū)分與理解
嵌入式Linux下一種新的觸摸屏定標方法的研究
嵌入式Linux觸摸屏在漆包線檢測系統(tǒng)中的應用
基于嵌入式技術的智能儀器觸摸屏接口設計
![基于<b class='flag-5'>嵌入式</b>技術的智能儀器<b class='flag-5'>觸摸屏</b>接口設計](https://file1.elecfans.com//web2/M00/A6/3E/wKgZomUMPHaAa4_WAAAR6XwcwFs720.jpg)
ARM嵌入式觸摸屏的設計
![ARM<b class='flag-5'>嵌入式</b><b class='flag-5'>觸摸屏</b>的設計](https://file.elecfans.com/web1/M00/49/D1/pIYBAFqrfI-AExFNAABeEF5UAx0632.jpg)
基于I2C的嵌入式Linux多點觸摸屏幕驅(qū)動系統(tǒng)設計
![基于I2C的<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>多點<b class='flag-5'>觸摸屏</b>幕驅(qū)動系統(tǒng)設計](https://file.elecfans.com/web1/M00/A9/B8/o4YBAF2hKJSAKtRsAABeS_bOFBA455.png)
單片機or嵌入式linux
![<b class='flag-5'>單片機</b>or<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
單片機轉(zhuǎn)嵌入式Linux的思考
![<b class='flag-5'>單片機</b>轉(zhuǎn)<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的思考](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
QT之嵌入式Linux下觸摸屏上隱藏鼠標指針的學習筆記
![QT<b class='flag-5'>之</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>下<b class='flag-5'>觸摸屏</b>上隱藏鼠標指針的學習筆記](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
是否要從單片機轉(zhuǎn)為嵌入式Linux
![是否要從<b class='flag-5'>單片機</b>轉(zhuǎn)為<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
嵌入式Linux的觸摸屏圖形組態(tài)軟件的研究
![<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的<b class='flag-5'>觸摸屏</b>圖形組態(tài)軟件的研究](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論