Qt5.8與觸摸Tslib-1.4庫ARM-ZYNQ平臺的移植(一)

本小節主要介紹Tslib-1.4庫的編譯與移植,下節主要Qt5.8的移植,以及Qt5.8與Tslib-1.4的對接,實現在Qt上的觸摸功能;

一、開發環境以及工具

PC系統:Linux version 4.10.0-38-generic (buildd@lgw01-amd64-059) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017

交叉編譯器:arm-xilinx-linux-gnueabi-gcc 

硬件平臺:賽靈思(XILINX)ZYNQ-7000開發板

二、前言

       首先介紹下交叉編譯器的使用方法,gcc(編譯c語言——.c程序)、g++編譯器(編譯c++——.cpp程序)在PC Linux系統上一般是裝好的,用他們編譯好的程序只能在X86平臺(32位系統,如Windows、Linux)、或者X64平臺(64位PC系統)上運行,PC的CPU一般是Intel架構或者AMD架構;而Linux的嵌入式平臺,CPU一般是ARM架構;如果需要在嵌入式平臺上運行程序,那麼就需要用該ARM平臺所對應的交叉編譯器(arm-linux-gcc或者arm-linux-g++)編譯程序源碼,然後拷貝到ARM開發板上運行。如果該應用程序還需要依賴某些庫文件(比如動態庫.So),那麼就需要把該庫的絕對路徑添加到環境變量KaTeX parse error: Expected 'EOF', got '#' at position 56: …n style="color:#̲000000;">LD_LIB…PATH路徑下增加該交叉編譯器bin路徑

PATH=PATH=$PATH:/mnt/workspace/qt/cross_compilers/bin/

讓剛所修改的環境變量立即生效

source /etc/profile

讓後我們在終端terminal中輸入arm後,再按Tab鍵(自動補齊功能),我們就可以看到以arm開頭的一些交叉編譯器工具的文件,意思是環境變量設置成功,交叉編譯器已經成功安裝,並能使用。

或者輸入命令查看交叉編譯器的版本

arm-xilinx-linux-gnueabi-gcc -v

三、Tslib庫的安裝與編譯

在編譯Tslib-1.4庫文件前,需要添加

解壓tslib-1.4庫源碼

unzip tslib-master.zip

進入解壓的tslib-master目錄:首先清除源碼並運行autogen.sh腳本

./autogen-clean.sh
./autogen.sh

但提示./autogen.sh: 3: ./autogen.sh: autoreconf: not found的錯誤,可看出缺少autoreconf,度娘說是移植tslib前需要安裝的插件,也就是一個準備工具。

1、下載了一個autoconf-2.69.tar.xz包進行安裝


需要解壓兩次,第一次把.tar.xz解壓成.tar包,再把所生成.tar解壓成目錄

  1. xz -d autoconf-2.69.tar.xz
  2. tar -xvf autoconf-2.69.tar

進入解壓所得到的autoconf-2.69目錄運行配置,–prefix參數爲安裝路徑

./configure --prefix=/usr/local/

但又提示configure: error: no acceptable m4 could be found in KaTeX parse error: Expected 'EOF', got '&' at position 7927: …umentation.<br>&̲nbsp;&nbsp;&nbs…TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=TSLIBROOT</span>/lib/ts<spanclass="hljsbuiltin">export</span>TSLIBFBDEVICE=/dev/fb0<spanclass="hljsbuiltin">export</span>TSLIBCONSOLEDEVICE=none<spanclass="hljsbuiltin">export</span>LDLIBRARYPATH=<spanclass="hljsvariable">TSLIB_ROOT</span>/lib/ts <span class="hljs-built_in">export</span> TSLIB_FBDEVICE=/dev/fb0 <span class="hljs-built_in">export</span> TSLIB_CONSOLEDEVICE=none <span class="hljs-built_in">export</span> LD_LIBRARY_PATH=<span class="hljs-variable">LD_LIBRARY_PATH:$TSLIB_ROOT/li

其中

  1. TSLIB_TSDEVICE //觸摸驅動座標上報的接口名,可以在dev/input/目錄下查看,本測試開發板爲event0
  2. TSLIB_CALIBFILE //校準的數據文件,由ts_calibrate校準程序生成。
  3. TSLIB_CONFFILE //配置文件名。
  4. TSLIB_PLUGINDIR //插件目錄
  5. TSLIB_CONSOLEDEVICE //控制檯設備文件名


TSLIB_FBDEVICE          //fb0爲ARM中的一塊內存,我們可以理解爲PC的顯存,要顯示應用層的圖形界面都不能繞過它

下面運行Tslib的ts_calibrate應用程序,首先檢測顯示屏的大小爲1024x600分辨率,然後一次點擊四個角落和中心點5個光標,判斷所點擊的位置和座標打印是否相符和,運行完後之程序會自動退出;


運行程序之前,顯示的是串口終端的信息

運行Tslib的ts_calibrate應用程序後,左上角會有一個十字光標,當我們點擊下十字光標,串口終端就會打印Topleft X=45 Y=71,其他的四個點同樣會打印出所被點擊點的座標,演示結果如下:

運行ts_test程序,點擊draw按鈕時,就可以隨意繪圖,點擊qiut就會退出該應用程序;


那麼tslib的移植以及校準就算完了,下一節介紹Qt5.8與觸摸的對接即Qt5.8與觸摸Tslib-1.4庫在嵌入式ARM-ZYNQ平臺的移植(二)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章