|
移植參考了網(wǎng)上流傳的許多相關(guān)文檔,感謝。
軟硬件環(huán)境: ubuntu10.04 32bit arm-linux-gcc-4.4.3 mini2440
1 下載tslib-1.4.tar.gz 觸摸屏庫(kù)文件包
解壓: tar -xvzf tslib-1.4.tar.gz
進(jìn)入解壓后得到的tslib文件夾: cd tslib
配置: ./configure --prefix=/opt/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonull=yes
arm-linux-gcc編譯tslib安裝在/opt/tslib下: make&&make install
2. 下載Qt libraries 4.8.5 for embedded Linux (230 MB) (Info)
解壓: tar xvzf qt-everywhere-opensource-src-4.8.5.tar.gz 我將解壓后的文件夾重命名為:qt-4.8.5-arm
cd qt-4.8.5-arm
./configure
可以看到許多配置qt功能及特征的選項(xiàng),參考別人的配置,配置如下:
./configure -prefix /usr/local/Trolltech/Qt-4.8.5-arm -release -shared -fast -opensource -no-3dnow -no-openssl -no-libmng -no-opengl -no-qvfb -no-glib -no-phonon -nomake examples -nomake tools -nomake docs -nomake demos -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-mouse-tslib -xplatform qws/linux-arm-g++ -embedded arm -little-endian -depths 16 -confirm-license -I/opt/tslib/include -L/opt/tslib/lib
其中-no-xxx表示配置qt不支持xxx, 而-qt-xxx表示qt支持xxx, 這里制定了qt的安裝路徑/usr/local/Trolltech/Qt-4.8.5-arm, qt目標(biāo)架構(gòu)arm,編譯平臺(tái)linux-arm-g++,那個(gè)qws我不清楚其意義,記得要配置qt支持觸屏:-qt-mouse-tslib,指定tslib的頭文件路徑:I/opt/tslib/include 和鏈接庫(kù)路徑-L/opt/tslib/lib即第1步安裝的tslib
make
這里編譯花了不少時(shí)間,且最開(kāi)始未能成功,因那次我下載編譯的是Qt libraries 4.8.5 for Linux/X11 (230 MB) (Info),而不是qt嵌入式linux庫(kù),我有意試一下,發(fā)現(xiàn)前一種不行。
make install
將qt庫(kù)安裝到/usr/local/Trolltech/Qt-4.8.5
3.把以上arm-linux-gcc編譯的庫(kù)拷貝到開(kāi)發(fā)板系統(tǒng)的根文件系統(tǒng)下,pc上開(kāi)發(fā)板的根文件系統(tǒng)路徑是/nfsroot
mkdir /nfsroot/opt/tslib
cp /opt/tslib/* /nfsroot/opt/tslib/
mkdir /nfsroot/usr/local/Trolltech/ -p
tar czvf Qt-4.8.5.tar.gz Qt-4.8.5-arm
在/usr/local/Trolltech下,我把pc下安裝的qt庫(kù)打包到/nfsroot/usr/local/Trolltech,即mini2440的根文件系統(tǒng)中,解壓
tar xvzf Qt-4.8.5.tar.gz
得Qt-4.8.5-arm
4.在/nfsroot/etc/下建立 profile 制定qt和tslib運(yùn)行的環(huán)境
vim profile
內(nèi)容如下 :
#!bin/sh
export TSLIB_ROOT=/opt/tslib
exprot TSLIB_TSDEVICE=/dev/event0
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointeral
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO=tslib:/dev/event0
export QWS_SIZE=320*240
export QTDIR=/usr/local/Trolltech/Qt-4.8.5-arm
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
以上的配置需根據(jù)自己的情況來(lái),根文件系統(tǒng)中tslib,qt的安裝目錄,觸摸屏,LCD在 /dev下的表示,窗口size,
修改tslib的配置文件ts.conf
vim ts.conf
module_raw input
將上面這條配置前的#去掉使之生效,讓tslib可以用linux中input上報(bào)事件的接口
module pthres pmin=1
pthres為tslib提供觸摸屏靈敏度門(mén)檻插件
module variance delta=30
variance為tslib提供觸摸屏濾波算法插件
module dejitter delta=100
dejitter為tslib提供去噪算法插件 module linear// linear為tslib提供坐標(biāo)變換插件
5.打開(kāi)SecureCRT,啟動(dòng)mini2440,掛載根文件系統(tǒng)后,在mini2440系統(tǒng)終端測(cè)試
cd /opt/tslib/bin
進(jìn)入tslib在根文件系統(tǒng)中的安裝目錄下的bin文件夾
./ts_calibrate
首先運(yùn)行ts_calibrate校準(zhǔn)屏幕
./ts_test
運(yùn)行測(cè)試
在運(yùn)行tslib/bin下的程序時(shí)出錯(cuò),看報(bào)錯(cuò):error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file
是在指定的庫(kù)路徑下找不到libdl.so.2庫(kù), 在網(wǎng)上發(fā)現(xiàn)一個(gè)方法,到交叉編譯工具鏈的庫(kù)文件夾去找找
cd /usr/local/arm/4.4.3
find ./ -name libdl.s0.2
./arm-none-linux-gnueabi/sys-root/lib/libdl.so.2
cd arm-none-linux-gnueabi/sys-root/lib/
cp libdl.so.2 /nfsroot/usr/local/Trolltech/Qt-4.8.5-arm/lib/
把該庫(kù)文件拷到根文件系統(tǒng)qt的庫(kù)文件夾下吧
6.pc交叉編譯幾個(gè)qt程序例子,拷入根文件系統(tǒng),在板子上運(yùn)行
cd /usr/local/Trolltech
進(jìn)入qt在pc上的安裝目錄
vim setenv-embedded.sh
#!bash shell
PATH=/usr/local/Trolltech/Qt-4.8.5-arm/bin:$PATH
QTDIR=/usr/local/Trolltech/Qt-4.8.5-arm
MAINPATH=$QTDIR/man:$MAINPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
pc上安裝了qt庫(kù),通過(guò)上面的腳本為qt應(yīng)用程序在pc上的編譯配置環(huán)境,如告知鏈接qt庫(kù)的路徑
cd /opt/qt-4.8.5-arm
進(jìn)入pc上qt包解壓后得到的qt源碼包文件夾
cd examples/mainwindows/application
進(jìn)入qt源碼包提供的主窗口例子下的application目錄
qmake
生成Makefile
make
編譯得到application
cp application /nfsroot/usr/test
將application拷貝至根文件系統(tǒng)/nfsroot/usr/test/下
啟動(dòng)mini2440,在其終端進(jìn)入/usr/test目錄,運(yùn)行application
./application -qws
若運(yùn)行出錯(cuò)說(shuō)缺少xxx庫(kù)文件,到交叉編譯工具鏈下的arm-none-linux-gnueabi/sys-root/lib/目錄下找到該庫(kù)文件,將其拷貝至根文件系統(tǒng) 中/usr/local/lib/目錄下。之前在根文件系統(tǒng)/etc/profile中配置mini2440下qt程序運(yùn)行環(huán)境時(shí)指定了庫(kù)文件的目錄,包括/usr/local/lib。
7.實(shí)現(xiàn)在啟動(dòng)mini2440進(jìn)入系統(tǒng)后屏幕校準(zhǔn)
cp /nfsroot/opt/tslib/bin/ts_calibrate /nfsroot/usr/bin/
將校準(zhǔn)程序ts_calibrate拷貝至標(biāo)準(zhǔn)執(zhí)行庫(kù)
chmod 777 /nfsroot/usr/bin/ts_calibrate
vim nfsroot/etc/profile
系統(tǒng)啟動(dòng)會(huì)執(zhí)行/etc/profile中指定行為,在最后一行添加ts_calibrate
如有誤,望指正。
|
|