盧愛紅
(蘇州經貿職業(yè)技術學院,蘇州 215009)
基于ARM的Qt/Embedded嵌入式環(huán)境部署
盧愛紅
(蘇州經貿職業(yè)技術學院,蘇州215009)
基于ARM的嵌入式產品,因CPU具有較高的主頻、豐富的接口、優(yōu)越的可移植性等性能,能適應各種嵌入式要求,得到了廣泛的應用。在嵌入式終端設備中,一般要求具有可視化界面。目前幾種常用的嵌入式界面包括:MiniGUI、MicroWindows、DinX、OpenGUI和Qt/Embedded。由Trolltech公司開發(fā)的Qt/Embedded嵌入式界面開發(fā)環(huán)境,是完全面向對象思想的C++開發(fā)軟件,提供應用程序開發(fā)者藝術級圖形界面設計所需要的功能,能編程實現嵌入式開發(fā)板上各種形式接口,如:網口、串口、I2C、USB、I2S等,應用靈活,性能優(yōu)越。由于ARM嵌入式產品的硬件軟件資源與個人電腦相比是有限的,不能提供在ARM產品上直接編輯、編譯圖形用戶界面(GUI)的功能,需要通過交叉編譯環(huán)境,將Linux發(fā)行版本中調試好的GUI界面部署到ARM產品。Qt/Embedded是為跨平臺軟件開發(fā)人員設計的,提供了支持Linux發(fā)行版本和Windows的Qt集成開發(fā)環(huán)境(IDE)、持續(xù)更新版本的Qt庫,將交叉編譯生成的Qt庫作為IDE的交叉編譯工具鏈,同時將Qt庫部署到嵌入式開發(fā)板,可以輕松實現跨平臺的GUI設計。
本設計中基于Qt/Embedded進行跨平臺的GUI設計的主要任務是在Linux發(fā)行版本或Windows的Qt集成開發(fā)環(huán)境中編輯設計GUI界面,經過交叉編譯后,部署到ARM開發(fā)板中運行。具體過程為:在Linux發(fā)行版本Ubuntu中安裝Qt集成開發(fā)環(huán)境Qt Creator和交叉編譯工具鏈arm-linux-g++,再交叉編譯生成版本為Qt4.8.1 的Qt庫,在Qt Creator的 “構建和運行”中指定Qt庫Qt4.8.1的qmake,并將Qt4.8.1部署到ARM開發(fā)板,如此,Qt Creator中編輯的GUI界面程序就可以在ARM開發(fā)板上運行,實現GUI圖形用戶界面的跨平臺設計。
跨平臺GUI設計的流程[1]如圖1所示。
圖1 跨平臺GUI設計的流程
Qt的集成開發(fā)環(huán)境(IDE)采用Qt Creator應用程序,可以在Windows平臺上運行,也可以在各種Linux發(fā)行版本中運行。開發(fā)環(huán)境基于Ubuntu平臺時,集成開發(fā)環(huán)境的配置需要使用root權限。qt-creator-linuxx86-opensource.bin是Qt Creator的安裝程序,通過Ubuntu的samba共享,拷貝到Ubuntu操作系統(tǒng)中,修改安裝程序的權限為可執(zhí)行,運行qt-creator-linux-x86-opensource.bin,自動安裝Qt Creator應用程序到Ubuntu操作系統(tǒng)中。具體命令如下:#chmod u+x qtcreator-linux-x86-opensource.bin;#./qt-creator-linuxx86-opensource.bin。
安裝Qt Creator之后,新建項目工程仍不具備Application GUI應用,需要安裝Qt庫文件Qt4.8.1,并配置Qt編譯環(huán)境qmake。用Ubuntu操作系統(tǒng)的root賬戶安裝Qt Sdk,下載Qt Sdk源代碼包qt-everywhere-opensource-src-4.8.1.tar.gz,將其解壓縮到/usr/local下,#tar zxvf qt-everywhere-opensource-src-4.8.1.tar.gz-C/usr/ local。安裝Qt Sdk依賴的軟件包:libX11-dev、libXextdev、libXtst-dev。執(zhí)行Qt Sdk中的配置文件configure,在/usr/local/qt-everywhere-opensource-src-4.8.1下執(zhí)行#./configure;#make;#make install。至此,Qt Sdk安裝完成,生成的Qt Sdk庫文件在/usr/local/Trolltech/Qt4.8.1/目錄下。再在Qt Creator應用程序中配置Qt Sdk,選擇QT creator->tools->option菜單,選擇“構建和運行”,在Qt版本中指定手動設置的/usr/local/Trolltech/Qt4.8.1/ bin/qmake,并在工具鏈中確認檢測到GCC工具鏈。配置完成后,新建Qt工程時,就會出現Application菜單中的Qt GUI應用。
交叉編譯生成能被ARM開發(fā)板的文件系統(tǒng)識別的Qt GUI界面設計的可執(zhí)行文件,需要交叉編譯Qt庫文件Qt4.8.1,并配置 Qt的交叉編譯環(huán)境 armqmake。執(zhí)行Qt Sdk中的配置文件configure,在/usr/local/qt-everywhere-opensource-src-4.8.1下執(zhí)行#cd qteverywhere-opensource-src-4.8.1;#echo yes|./configure -prefix/opt/Qt4.8-opensource-embedded arm-xplatform qws/linux-arm-g++-no-webkit-qt-libtiff-qtlibmng-qt-mouse-tslib-qt-mouse-pc-no-mouse-linuxtp-no-neon。上面的主要參數含義說明如下:-embedded arm:表示將編譯針對arm平臺的embedded版本;-xplatform qws/linux-arm-g++:表示使用arm-linux交叉編譯器進行編譯;-qt-mouse-tslib:表示將使用tslib來驅動觸摸屏;-prefix/opt/Qt4.8:表示Qt4.8最終的安裝路徑是/opt/Qt4.8,布置到ARM開發(fā)板時,需要將Qt4.8拷貝到此路徑。執(zhí)行以下命令進行編譯并安裝Qt4.8:#make;#make install。安裝完成后,在Qt Creator的“構建和運行”中指定qmake和交叉編譯工具鏈Linux ICC為arm-linux-g++和arm-linux-gdb。配置完成,新建Qt工程,在“項目”菜單欄可以指定交叉編譯的qmake和 Linux ICC工具鏈。編譯輸出的就是能被ARM開發(fā)板的文件系統(tǒng)識別的Qt GUI界面設計的可執(zhí)行文件。
將Qt4.8部署到ARM開發(fā)板時,根據Qt4.8庫文件交叉編譯時-prefix參數指定的目錄,將Qt4.8庫文件安裝在/opt/Qt4.8目錄下,在Ubuntu上將Qt4.8打包,再解壓到ARM開發(fā)板上的/opt目錄下:@#cd/opt;@# tar xvzf Qt4.8.tgz-C/opt。
要在ARM開發(fā)板上正確運行Qt的GUI程序,除了要求安裝Qt4.8庫文件外,還需要編寫一個腳本setqt4env,這個腳本用于設置Qt程序所需要的環(huán)境變量。腳本文件的位置是/bin/setqt4env。輸入以下命令創(chuàng)建 并 編 寫 腳 本/bin/setqt4env:@#vi/bin/setqt4env;@#chmod+x/bin/setqt4env。文件具體要修改的內容:export set QTDIR=/opt/Qt4.8;export set QPEDIR=/opt/ Qt4.8;export set QWS_MOUSE_PROTO="TSLIB:/dev/ event1 MouseMan:/dev/mouse0"。
選用主CPU為S3C2440的開發(fā)板,并已燒錄好內核和文件系統(tǒng)。開發(fā)環(huán)境選用Ubuntu12.04版本,安裝Qt Creator2.5.1,Qt庫文件選用Qt4.8.1,交叉編譯工具鏈選用4.3.4版本。
以一個簡單的基于網絡的服務器和客戶端信息傳輸的Qt GUI程序為例,說明Qt的嵌入式開發(fā)環(huán)境部署的流程。一般來說,基于ARM的嵌入式產品,以ARM開發(fā)板作為網絡的服務器,負責監(jiān)控現場數據的采集、存儲和傳輸,以PC機作為客戶端,客戶端主動連接服務器,并查詢現場數據,向服務器發(fā)送執(zhí)行操作的指令。在ARM開發(fā)板上運行服務器程序,需要在ARM開發(fā)板的文件系統(tǒng)中部署Qt的嵌入式環(huán)境,服務器程序經過交叉編譯后,燒錄到ARM開發(fā)板,在PC機上運行的客戶端程序采用非交叉編譯的方法編譯,最終,在服務器和客戶端設備保證網絡連通的基礎上,實現通信。
Qt提供了完全使用類封裝的socket,用戶不需要接觸底層的各種結構體。socket的類封裝,采用Qt本身的信號-槽機制,使編寫的程序更容易理解。在pro文件中添加network模塊QT+=network。Qt使用socket類提供的QTcpServer和QTcpSocket進行TCP網絡編程。QTcpServer類負責TCP建立 (監(jiān)聽端口),QTcpSocket負責TCP會話(管理客戶通信數據)。涉及頭文件包括:監(jiān)聽端口的QTcpServer、客戶連接管理的QTcpSocket、事件驅動的句柄監(jiān)聽類文件QSocketNotifier。
基于面向對象思想的服務器端Qt程序流程圖[2]如圖2所示。
圖2 服務器端Qt程序流程圖
客戶端跟服務器端的區(qū)別在于不要進行端口監(jiān)聽,使用QTcpSocket類的connectToHost函數連接服務器即可,其它實現與服務端一致。
服務器端程序交叉編譯后,部署到ARM開發(fā)板,可以與Ubuntu主機中的客戶端程序實現穩(wěn)定流暢的通信。
本設計主要實現了Qt的嵌入式環(huán)境的部署,實現了Qt的IDE開發(fā)環(huán)境Qt Creator的交叉編譯條件和非交叉編譯條件的配置,ARM開發(fā)板上的文件系統(tǒng)中的Qt庫文件的部署,并在ARM開發(fā)板上用腳本程序setqt4env配置Qt運行的環(huán)境變量,最終將交叉編譯后的Qt程序拷貝到ARM開發(fā)板后,能夠順利啟動。本設計在Qt設計環(huán)境中,以網絡傳輸的服務器和客戶端程序為例,提供了以完全面向對象的思想設計Qt的GUI程序的思路,實驗證明Qt嵌入式環(huán)境部署的方法能夠很好地適應各種Linux開發(fā)環(huán)境和ARM開發(fā)板的版本,具有很好的魯棒性。本系統(tǒng)的設計為ARM開發(fā)板的Qt的GUI應用提供了較完整的解決方案和系統(tǒng)化的設計思路,但是功能相對簡單,在實際企業(yè)應用中,需在此框架設計的基礎上,進一步優(yōu)化細節(jié)。
[1]盧愛紅.基于Qt/Embedded的水務數據監(jiān)測系統(tǒng).計算機時代[J],2014(12):22.
[2]田磊.嵌入式Linux系統(tǒng)中基于QT庫的應用程序設計.實驗室研究與探索[J],2014,33(5):84.
[3]陳敬,向偉.基于嵌入式Linux的QT/Embedded移植與應用開發(fā).電腦與信息技術[J],2013,21(1):57.
[4]吳子平,徐愛鈞.基于Qt/Embedded的嵌入式GUI的研究與構建.電腦開發(fā)與應用[J],2012,25(1):13.
[5]盧愛紅,劉中原,馮蓉珍.基于ARM的自助出票機便攜式終端設計.計算機時代[J],2013(9):28.
[6]MICHAEL Owens.The Definitive Guide to SQLite[M].US:Apress,2006.
Random Sampling;JavaScript;Program Design
A Random Sampling Program Design Based on JavaScript
XU Peng1,XU Qing-yuan2
(1.The 5th Electronics Research Institute of MII,Guangzhou 510610;2.Department of Electronic Communication&Software Engineering,Nanfang Colloge,Sun Yat-sen University,Guangzhou 510970)
1007-1423(2015)33-0054-03
10.3969/j.issn.1007-1423.2015.33.015
盧愛紅(1981-),女,江蘇南通人,講師,在讀博士研究生,研究方向為無線通信、物聯(lián)網應用技術
2015-11-14
2015-11-20
嵌入式ARM產品對GUI設計的質量要求日益提高,本設計提供在ARM開發(fā)板上部署Qt/Embedded嵌入式環(huán)境的方法,詳細描述Qt/Embedded的集成開發(fā)環(huán)境的配置過程、Qt的庫文件Qt4.8的交叉編譯和非交叉編譯的方法、ARM開發(fā)板的文件系統(tǒng)環(huán)境配置流程,最后以Qt環(huán)境下網絡通信的服務器和客戶端程序的設計部署為例,驗證該設計方法。實驗證明,基于完全面向對象思想的Qt嵌入式GUI界面嵌入式環(huán)境部署的可實現性和優(yōu)越性,為ARM嵌入式產品的界面設計提供了一種有競爭力的解決方案。
Qt/Embedded;GUI;ARM;嵌入式環(huán)境
In daily life,one or more data is often needed to be randomly selected from a certain amount of data.Introduces a method to design a random sampling program based on JavaScript.The program flow chart is designed,analyzes the key points of programing,by an example,demonstrates the implementation effect of the random sampling program.