QT/Embedded 通過(guò)Qt API 與Linux I/O 設(shè)施直接交互,,成為嵌入式linux 端口,。同Qt/X11 相比,, QT/Embedded 很節(jié)省內(nèi)存,,其不需要一個(gè)X 服務(wù)器或是Xlib 庫(kù),,它在底層擯棄了Xlib,采用 framebuffer (幀緩存)作為底層圖形接口,。同時(shí),將外部輸入設(shè)備抽象為keyboard 和mouse 輸入事件,。 QT/Embedded 的應(yīng)用程序可以直接寫內(nèi)核緩沖幀,這可避免開發(fā)者使用繁瑣的Xlib/Server 系統(tǒng),。今天我就給大家演示如何配置編譯 及測(cè)試QT/Embedded 環(huán)境。 1,、將QT/Embedded 壓縮包(/UP-Magic6410/SRC/gui/目錄下)拷貝到新建立的目錄下并解壓 [root@localhost for_arm]# tar xjvf /UP-Magic6410/SRC/gui/qt-embedded-linux-opensource-src-4.4.0.tar.bz2 -C /home/uptech/QT4/for_arm/ 這樣在實(shí)驗(yàn)?zāi)夸浀膄or_arm 下產(chǎn)生解壓后的qt-embedded-linux-opensource-src-4.4.0 目錄。所有QT/Embedded 環(huán)境源碼都存放在此,。 2,、進(jìn)入qt-embedded-linux-opensource-src-4.4.0 目錄執(zhí)行configure 文件,,配置QT/Embedded 環(huán)境 [root@localhost for_arm]# cd qt-embedded-linux-opensource-src-4.4.0/ [root@localhost qt-embedded-linux-opensource-src-4.4.0]# ./configure -embedded arm -xplatform qws/linux-arm-g++ -nomake demos -nomake examples -no-stl -no-qt3support -no-phonon -no-svg -no-webkit -no-openssl -no-nis -no-cups -no-iconv -no-pch -no-dbus -no-separate-debug-info -depths 8,16 -fast -little-endian -qt-mouse-linuxtp -qt-mouse-tslib -I$PWD/../tslib1.4-install/include -L$PWD/../tslib1.4-install/lib -prefix /usr/local/Trolltech/Qt-embedded-4.4.0 其中-prefix 參數(shù)指定QT-X11 環(huán)境的安裝目錄,;-qt-mouse-tslib 參數(shù)指定了該QT/Embedded 環(huán)境支持觸摸屏 設(shè)備,;-I 與-L 參數(shù)指定了觸摸屏設(shè)備的頭文件以及庫(kù)文件路徑,,當(dāng)然,,兩個(gè)參數(shù)的指定要與實(shí)際編譯tslib 庫(kù) 時(shí)候安裝路徑為準(zhǔn)。./configure 配置選項(xiàng)過(guò)長(zhǎng),,使用該命令時(shí)候請(qǐng)仔細(xì)檢查不要寫錯(cuò),。Configure 的其他具 體配置用戶可以通過(guò)—help 命令查看: [root@localhost qt-embedded-linux-opensource-src-4.4.0]# ./configure --help 在輸出的許可證提示符下輸入“yes”同意回車即可進(jìn)入QT/Embedded 庫(kù)的配置過(guò)程,注意yes 大小寫及全稱,。 3,、編譯QT/Embedded 庫(kù) [root@localhost qt-embedded-linux-opensource-src-4.4.0]# make 由于QT 庫(kù)環(huán)境的龐大體積,編譯QT/Embedded 庫(kù)環(huán)境時(shí)間比較長(zhǎng),,具體時(shí)間因機(jī)器配置而異(大約2 個(gè)小時(shí)左 右),。 4,、安裝QT/Embedded 庫(kù) [root@localhost qt-embedded-linux-opensource-src-4.4.0]# make install 此時(shí)便會(huì)在/usr/local/目錄下產(chǎn)生Trolltech/ Qt-embedded-4.4.0 目錄,。 測(cè)試觸摸屏及 QT/E 程序 1,、在上述實(shí)驗(yàn)的 NFS 共享目錄/UP-Magic6410/下建立Trolltech 目錄,,后續(xù)的QT/Embedded 實(shí)驗(yàn)都是在此目 錄下共享到ARM 設(shè)備端執(zhí)行QT/E 程序的,。因此我們需要在該目錄下搭建好QT/E 的環(huán)境,,也就是拷貝編譯 好的QT/E 動(dòng)態(tài)庫(kù)以及tslib 環(huán)境到此目錄下,。 [root@localhost /]# cd /UP-Magic6410/ [root@localhost UP-Magic6410]# mkdir Trolltech [root@localhost UP-Magic6410]# ls DOC IMG SRC Trolltech install.sh readme.txt tmp [root@localhost UP-Magic6410]# 2,、將上述實(shí)驗(yàn)編譯好的 QT/Embedded 庫(kù)環(huán)境及tslib 環(huán)境拷貝到建立的NFS 目錄Trolltech 中,。 拷貝QT/Embedded 庫(kù)環(huán)境 [root@localhost Trolltech]# cp /usr/local/Trolltech/Qt-embedded-4.4.0/ /UP-Magic6410/Trolltech/ -arf [root@localhost Trolltech]# ls Qt-embedded-4.4.0 3,、 拷貝 tslib 環(huán)境 [root@localhost Trolltech]# cp /home/uptech/QT4/for_arm/tslib1.4-install/lib/* /UP-Magic6410/Trolltech/Qt-embedded-4.4.0/lib/ -a [root@localhost Trolltech]# cp /home/uptech/QT4/for_arm/tslib1.4-install/bin/* /UP-Magic6410/Trolltech/Qt-embedded-4.4.0/bin/ -a [root@localhost Trolltech]# cp /home/uptech/QT4/for_arm/tslib1.4-install/etc/ /UP-Magic6410/Trolltech/Qt-embedded-4.4.0/ -a [root@localhost Trolltech]# 4,、ARM 端掛載NFS 共享目錄 啟動(dòng)UP-Magic6410 實(shí)驗(yàn)系統(tǒng),連好網(wǎng)線,、串口線。通過(guò)串口終端掛載宿主機(jī)實(shí)驗(yàn)?zāi)夸洝?/span> [root@UP_6410 yaffs]# mountnfs 192.168.1.145:/UP-Magic6410 /mnt/nfs/ 5,、設(shè)置環(huán)境變量 (ARM 端) 進(jìn)入QT/Embedded 實(shí)驗(yàn)NFS 共享目錄Trolltech 中 [root@UP_6410 yaffs]# cd /mnt/nfs/Trolltech/Qt-embedded-4.4.0/ [root@UP_6410 Qt-embedded-4.4.0]# ls bin include mkspecs translations etc lib plugins [root@UP_6410 Qt-embedded-4.4.0]# 根據(jù)此實(shí)驗(yàn)?zāi)夸浵碌哪夸涍M(jìn)行ARM 端環(huán)境變量設(shè)置,,如下: [root@UP_6410 Qt-embedded-4.4.0]# export QTDIR=$PWD [root@UP_6410 Qt-embedded-4.4.0]# export LD_LIBRARY_PATH=$PWD/lib [root@UP_6410 Qt-embedded-4.4.0]# export TSLIB_TSDEVICE=/dev/event1 [root@UP_6410 Qt-embedded-4.4.0]# export TSLIB_PLUGINDIR=$PWD/lib/ts [root@UP_6410 Qt-embedded-4.4.0]# export TSLIB_CONSOLEDEVICE=none [root@UP_6410 Qt-embedded-4.4.0]# export TSLIB_CONFFILE=$PWD/etc/ts.conf [root@UP_6410 Qt-embedded-4.4.0]# export POINTERCAL_FILE=$PWD/etc/ts-calib.conf [root@UP_6410 Qt-embedded-4.4.0]# export QWS_MOUSE_PROTO=tslib:/dev/event1 [root@UP_6410 Qt-embedded-4.4.0]# export TSLIB_CALIBFILE=$PWD/etc/ts-calib.conf [root@UP_6410 Qt-embedded-4.4.0]# export QT_QWS_FONTDIR=$PWD/lib/fonts [root@UP_6410 Qt-embedded-4.4.0]# export 6、執(zhí)行觸摸屏校準(zhǔn)程序(在NFS 共享目錄的Qt-embedded-4.4.0/bin/目錄下): [root@UP_6410 Qt-embedded-4.4.0]# ./bin/ts_calibrate No raw modules loaded. ts_config: No such file or directory [root@UP_6410 Qt-embedded-4.4.0]# 如果出現(xiàn)如下錯(cuò)誤提示: Couldnt load module pthres No raw modules loaded. 則更改ts.conf 配置文件(在在NFS 共享目錄的Qt-embedded-4.4.0/etc 目錄下)選擇一個(gè)輸入設(shè)備,,當(dāng)然也可 以在宿主機(jī)端/UP-Magic6410/Trolltech/Qt-embedded-4.4.0/etc 目錄下更改,。 [root@UP_6410 Qt-embedded-4.4.0]# vi etc/ts.conf 內(nèi)容如下:將module_raw input 一行前的“#”注釋符去掉,,且頂行寫。 # Uncomment if you wish to use the linux input layer event interface module_raw input # Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d # module_raw collie 再次執(zhí)行觸摸屏校準(zhǔn)程序即可,, [root@UP_6410 Qt-embedded-4.4.0]# ./bin/ts_calibrate xres = 640, yres = 480 程序會(huì)自動(dòng)存儲(chǔ)坐標(biāo)校準(zhǔn)信息以便應(yīng)用程序使用。此時(shí)如無(wú)錯(cuò)誤則進(jìn)入5 點(diǎn)觸摸屏校準(zhǔn)程序并存儲(chǔ)配置文件,。 還可以進(jìn)行其他觸摸屏測(cè)試程序ts_test,、ts_print(與ts_calibrate 同目錄下)等,。 提示:由于UP-Magic6410 型設(shè)備出廠已經(jīng)在系統(tǒng)后臺(tái)運(yùn)行了QPE 程序,因此會(huì)對(duì)本次實(shí)驗(yàn)運(yùn)行TSLIB 或QT/E 程序有影響,,因此應(yīng)先殺死該QPE 后臺(tái)進(jìn)程。如: 在ARM 終端中使用ps 命令查看進(jìn)程: [root@UP_6410 yaffs]# ps 356 root 0 SW< [krfcommd] 385 root 3012 S syslogd -m 0 -L 387 root 3012 S klogd 425 root 2896 S -bash 432 root 2148 S /usr/local/sbin/vsftpd 435 root 13540 S /mnt/yaffs/Qtopia/bin/qpe 444 root 8108 R /mnt/yaffs/Qtopia/bin/qss 445 root 8120 R N /mnt/yaffs/Qtopia/bin/quicklauncher 446 root 3016 R ps 會(huì)看到QPE 進(jìn)程號(hào)為435,使用killall 命令殺死該進(jìn)程: [root@UP_6410 yaffs]# killall qpe [root@UP_6410 yaffs]# 即可,。 夏天好熱,,希望大家天天都有好心情,。
|
|