国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式Linux系統(tǒng)中基于QT庫的應(yīng)用程序設(shè)計(jì)

2014-05-16 09:54:44
實(shí)驗(yàn)室研究與探索 2014年5期
關(guān)鍵詞:環(huán)境變量開發(fā)板應(yīng)用程序

田 磊

(西安郵電大學(xué)電子工程學(xué)院,陜西西安 710121)

嵌入式Linux系統(tǒng)中基于QT庫的應(yīng)用程序設(shè)計(jì)

田 磊

(西安郵電大學(xué)電子工程學(xué)院,陜西西安 710121)

基于S3C2440微處理器所構(gòu)建的ARM9硬件平臺,配置并移植了嵌入式Linux系統(tǒng),在主機(jī)和開發(fā)板之間建立交叉編譯環(huán)境以及QT和QT/Embedded的GUI的開發(fā)環(huán)境。提出了基于嵌入式QT界面中應(yīng)用程序的設(shè)計(jì)方法,在此基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了具有加、減、乘、除四則運(yùn)算功能的數(shù)學(xué)運(yùn)算器,實(shí)現(xiàn)了基于QT的嵌入式應(yīng)用程序的設(shè)計(jì),應(yīng)用程序可以在開發(fā)板上正常運(yùn)行。

嵌入式;Linux;QT Designer;交叉編譯;移植

0 引言

隨著用戶要求的不斷提高,越來越多的嵌入式設(shè)備使用功能強(qiáng)大、價(jià)格低廉的嵌入式Linux作為操作系統(tǒng)并開始采用較為復(fù)雜的圖形用戶界面。本文在基于微處理器S3C2440的ARM開發(fā)板和PC機(jī)上共同建立Linux環(huán)境[1-2],在PC的Linux系統(tǒng)中利用QT設(shè)計(jì)了一款多功能數(shù)學(xué)運(yùn)算器,調(diào)試成功后對其進(jìn)行交叉編譯并移植到開發(fā)板上進(jìn)行實(shí)現(xiàn)[3-4]。

1 基于QT的程序設(shè)計(jì)

QT Designer是用來設(shè)計(jì)和實(shí)現(xiàn)用戶界面并能夠在多平臺下使用的一種工具。通過使用純C++語言開發(fā)來支持嵌入式Linux系統(tǒng),采用QT/Embedded作為GUI來提供強(qiáng)大的用戶界面[5],實(shí)現(xiàn)一個開放式的接口來增強(qiáng)擴(kuò)展性,利用內(nèi)核幀緩沖來輸出,消除對特定架構(gòu)的依賴,從而保證應(yīng)用程序的可移植性[6]。

1.1 QT的編程機(jī)制

QT與其他GUI最大的不同就在于它提供了“信號與插槽”機(jī)制。這一機(jī)制提供了對象間的通信機(jī)制,它易于理解和使用,并完全被QT圖形開發(fā)環(huán)境所支持,可以取代原始的回調(diào)和消息映射機(jī)制;信號與插槽是迅速的,類型安全的[7],健壯的,完全面向?qū)ο蟛⒂肅++來實(shí)現(xiàn)的一種機(jī)制。QT的窗口在事件發(fā)生后會激發(fā)信號。信號與插槽機(jī)制以警告的方式報(bào)告類型錯誤,而不會使系統(tǒng)產(chǎn)生崩潰[8]。

1.2 設(shè)計(jì)應(yīng)用程序

進(jìn)入Linux環(huán)境后單擊右鍵,彈出一個列表,選擇“打開終端”。打開終端之后,逐次輸入以下命令:

口令運(yùn)行結(jié)束后即可進(jìn)入QT designer環(huán)境,新建一個名為 calculator.pro的工程并保存在/root/calculator目錄下,同理新建對話窗口,此時(shí)在 QT designer中出現(xiàn)的form1窗口中,修改 Property Editor的各項(xiàng)值。并在主窗體“form1”的空白處雙擊鼠標(biāo)左鍵,彈出對話框“Creating ui.h file”,選擇“Yes”,即可出現(xiàn)編輯窗口,此時(shí)需在函數(shù)體中添加槽[9]。槽代碼的流程圖如圖1所示。

圖1 槽代碼流程圖

1.3 生成Makefile文件并編譯

在完成了相應(yīng)代碼的程序設(shè)計(jì)之后,首先要在PC機(jī)上編譯出可執(zhí)行文件,從而在移植之前檢查所設(shè)計(jì)數(shù)學(xué)運(yùn)算器的界面和功能[10],具體的操作如下所示:

運(yùn)行calculator可執(zhí)行文件之后,就可以看到設(shè)計(jì)的數(shù)學(xué)運(yùn)算器了。接下來要測試的就是該運(yùn)算器的具體功能了,因?yàn)樵谠O(shè)計(jì)中,運(yùn)算器的運(yùn)算功能是由信號和槽決定的,所以檢查運(yùn)算器的功能就可以得知所設(shè)計(jì)的槽是否正確。

2 編譯并移植應(yīng)用程序

2.1 交叉編譯環(huán)境的建立

交叉編譯就是在一個平臺上生成另一個平臺體系上的可執(zhí)行代碼。由于一般通用計(jì)算機(jī)擁有非常豐富的系統(tǒng)資源、而對大多數(shù)嵌入式系統(tǒng)來說,由于目標(biāo)平臺的執(zhí)行能力或系統(tǒng)資源有限而且沒有相關(guān)的編譯工具,因此,嵌入式系統(tǒng)的開發(fā)需要借助主機(jī)(通用計(jì)算機(jī))來編譯出目標(biāo)機(jī)的可執(zhí)行代碼,交叉編譯是唯一可行的編譯方式。根據(jù)圖2可以建立嵌入式系統(tǒng)的交叉編譯環(huán)境。其具體步驟如下:

圖2 交叉編譯環(huán)境

由于環(huán)境變量的設(shè)置非常重要,它關(guān)系到能否正確的安裝及編譯這些安裝包[11]。通過下面口令修改環(huán)境變量,

在文件中找到pathmunge/usr/local/sbin,在其后添加一行:

重新指定編譯環(huán)境的路徑后,要使更改的環(huán)境變量生效,一般的做法是重新登錄,運(yùn)行 source/etc/profile可以使導(dǎo)出的環(huán)境變量馬上生效,避免重啟。通過以下測試:

測試完畢后,終端顯示為:/root/tools/2.95.3/bin/arm-linux-gcc,這表明 cross-2.95.3 編譯環(huán)境安裝成功。

2.2 QT/X11和QT/E的安裝

由于QT庫是通過使用X11庫來實(shí)現(xiàn),并且使用X窗口系統(tǒng)[12]。因此可以基于cross-2.95.3編譯環(huán)境的成功安裝,首先安裝QT/X11,依次執(zhí)行如下口令即可:

經(jīng)過編譯后,QT/X11就安裝成功了;安裝完交叉工具鏈之后,就要對QT/E軟件包進(jìn)行編譯了,依次執(zhí)行如下命令[13]:

編譯過程結(jié)束后,生成庫文件,這樣QT/E就安裝成功了。

2.3 程序的移植

由于QT/E是基于QT的嵌入式GUI的交叉開發(fā)平臺,其底層圖形引擎基于幀緩沖,進(jìn)行如下環(huán)境變量的修改[14],然后依次執(zhí)行以下口令:

這樣就可以生成在開發(fā)板(S3C2440)上運(yùn)行的可執(zhí)行文件calculator了。

3 應(yīng)用程序的調(diào)試

將上述可執(zhí)行文件復(fù)制到開發(fā)板的文件系統(tǒng)中的/root/qt/bin目錄下,并用目錄/root/tools/qtembedded-free-3.3.4下的lib庫文件替換文件系統(tǒng)中的/root/qt目錄下的lib庫文件,用產(chǎn)生的開發(fā)板文件系統(tǒng)的壓縮形式root.cramfs替換Linux文件系統(tǒng)中的tftpboot目錄下的文件[15]。

這樣就可以在開發(fā)板的觸摸屏上就可以看到如圖3所示的運(yùn)算器的界面了[16]。通過對數(shù)學(xué)運(yùn)算器的設(shè)計(jì)流程,完成了從主機(jī)開發(fā)、編譯、移植到開發(fā)板上成功運(yùn)行的開發(fā)步驟。

圖3 開發(fā)板上顯示出的計(jì)算器

4 結(jié)語

嵌入式Linux系統(tǒng)能很好地支持應(yīng)用程序的多樣性和實(shí)時(shí)性,通過QT designer固有的槽機(jī)制,以小型數(shù)學(xué)運(yùn)算器為例設(shè)計(jì)相關(guān)的程序,經(jīng)過安裝X11和QT/E使交叉編譯好的可執(zhí)行代碼能夠成功運(yùn)行在S3C2440平臺上。

本文完成了X86體系和ARM體系下應(yīng)用程序的設(shè)計(jì)、編譯與調(diào)試過程,實(shí)現(xiàn)了嵌入式系統(tǒng)的良好移植性以及核心的代碼的可重用性。后期開發(fā)只需通過較小的修改就能將應(yīng)用程序移植到具有不同操作系統(tǒng)的硬件平臺上,可以廣泛使用在各種嵌入式系統(tǒng)中。

[1] Jasmin Blanchette.Mark Summerfield.C++ GUI Programming with Qt 3[M].北京:北京航空航天大學(xué)出版社,2006,8.

[2] 李敏杰,昂志敏,文建闊,等.基于 Linux的便捷式移動終端設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2013,39(5):309-313.

LI Ming-jie,ANG Zhi-min,WEN Jian-kuo,LI Yao.Design and Implementation of Convenient Mobile Terminal Based on Linux[J].Computer Engineering,2013,39(5):309-313.

[3] 吳紅蘭,黃圣國.嵌入式GPS數(shù)據(jù)采集與分系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2011,30(1):54-57.

WU Hong-lan,HUANG Sheng-guo.Design of Embedded GPS Data Receiving and Analysis system [J].Research and Exploration in Laboratory,2011,30(1):54-57.

[4] 洪 松,朱龍英.基于ARM—Linux的超聲波測距系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].自動化與儀表,2013,28(3):21-24.

HONG Song, ZHU Long-ying. Designand Implementation of Ultrasonic Distance Measure System Based on ARM-Linux [J].Automation& Instrumentation,2013,28(3):21-24.

[5] 陳永強(qiáng),陶 品,王篤強(qiáng).嵌入式Linux移植[J].實(shí)驗(yàn)室研究與探索,2012(9):67-72.

CHEN Yong-qiang,TAO Pin,WANG Du-qiang.Embedded Linux Transplantation[J].Recarch and Exploration in Laboratory,2012(9):67-72.

[6] Liu C L,Layland J W.Scheduling algorithms for multiprogramming in a hard real-time environment[J].Journal of the ACM,1973 20(1):44-61.

[7] 張 磊,鮑 鴻,黃賢新,等.基于RTnet構(gòu)建具有實(shí)時(shí)網(wǎng)絡(luò)的嵌入式Linux系統(tǒng)[J].計(jì)算機(jī)工程與應(yīng)用,2013,49(1):72-74.

ZHANG Lei,BAO Hong,HUANG Xianxin,et al.Constructing embedded Linux system with real-time network based on RTnet[J].Computer Engineering and Applications,2013,49(1):72-74.

[8] Gong T.Immune Embedded Linux Core System with Multiple Sensors[J].International Journal of Distributed Sensor Networks,2013,32(3):105-119.

[9] 倪繼利.Qt及Linux操作系統(tǒng)窗口設(shè)計(jì)[M].北京:電子工業(yè)出版社,2006.

[10] Tian Lei.The Protection of Water Resources Environmental Based on Embedded Linux System [J].Water Resource and Environmental Protection,2011,3(2):2096-2099.

[11] 唐 敏,趙正紅,林 昕.基于ARM-LINUX嵌入式GUI的研究與開發(fā)[J].微計(jì)算機(jī)信息,2012,28(7):69-75.

TANG Min,ZHAO Zheng-hong,LIN Xin.The Investigation and exploitationofEmbeddedGUIbaseonARM-LINUX [J].Microcomputer Information,2012,28(7):69-75

[12] 郭 磊,何 波,于 青,等.基于QTE的嵌入式Linux下可視化打印設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007,3(2):15-16.

GUO Lei,HE Bo, YU Qing,WANG Qian. Visualization and printing based on QTE and embedded Linux[J].Microcomputer Information,2007,3(2):15-16.

[13] William Standings.操作系統(tǒng)——內(nèi)核與設(shè)計(jì)原理[M].4版.魏迎梅,王涌等譯.北京:電子工業(yè)出版社,2001.

[14] Scott Maxwell,Linux內(nèi)核源代碼分析[M].馮 銳,邢 飛,劉隆國等譯.北京:機(jī)械工業(yè)出版社,2000.

[15] Daniel Solin著,袁鵬飛譯.24小時(shí)學(xué)通Qt編程[M].北京:人民郵電出版社,2000.

[16] Chen Kun,Chen Yun-qin,Liu Xin.Application design based on Qt/Embedded andembeddedLinux [J].ComputerandDigital Engineering,2009,37(1):156-161.

Design of Application Program of Embedded Linux System Based on QT

TIAN Lei
(School of Electronic Engineering,Xi’an University of Posts and Telecommunications,Xi’an 710121,China)

Based on the micro processor S3C2410’s and the ARM platform,the author configures and ports the embedded Linux system,and establishes the cross-compiler environment and the GUI’s environment of the QT and QT/Embedded.The paper describes the method and the application program based on QT interface.On this base,the author develops a calculator program with the function of the four fundamental operations of arithmetic and makes the embedded program on QT in the Linux system.

embedded;Linux;QT Designer;cross compiler;transplant

TP319

A

1006-7167(2014)05-0084-03

2013-07-11

國家自然科學(xué)基金(61106026);陜西省自然科學(xué)基金(2013JM5002)

田 磊(1980-),男,天津人,碩士,講師,主要研究方向:嵌入式系統(tǒng)、嵌入式Linux系統(tǒng)的圖形研究。

Tel.:15929907626,029-88166266;E-mail:tianlei@xupt.edu.cn

猜你喜歡
環(huán)境變量開發(fā)板應(yīng)用程序
基于最大熵模型的云南思茅松潛在分布區(qū)
從桌面右鍵菜單調(diào)用環(huán)境變量選項(xiàng)
徹底弄懂Windows 10環(huán)境變量
刪除Win10中自帶的應(yīng)用程序
Microchip最新推出兩款PIC32 Curiosity開發(fā)板
淺析單片機(jī)開發(fā)板的設(shè)計(jì)與制作
電子制作(2017年22期)2017-02-02 07:10:14
基于三階段DEA—Malmquist模型的中國省域城鎮(zhèn)化效率測度及其收斂分析
Mouser為您呈上開發(fā)關(guān)鍵之STMicroelectronics Nucleo開發(fā)板
Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
长子县| 武威市| 潼关县| 太仓市| 陕西省| 仁布县| 贵溪市| 怀仁县| 黑水县| 尤溪县| 阆中市| 车险| 临安市| 石门县| 偃师市| 敖汉旗| 葫芦岛市| 永兴县| 罗定市| 云阳县| 巧家县| 南皮县| 永泰县| 惠安县| 海晏县| 米脂县| 桐梓县| 醴陵市| 洮南市| 纳雍县| 漳浦县| 永寿县| 莆田市| 云龙县| 新河县| 沙坪坝区| 新营市| 昌乐县| 阳新县| 连州市| 蕲春县|