APP下载

嵌入式Linux系统中基于QT库的应用程序设计

2014-05-16

实验室研究与探索 2014年5期
关键词:环境变量开发板应用程序

田 磊

(西安邮电大学电子工程学院,陕西西安 710121)

嵌入式Linux系统中基于QT库的应用程序设计

田 磊

(西安邮电大学电子工程学院,陕西西安 710121)

基于S3C2440微处理器所构建的ARM9硬件平台,配置并移植了嵌入式Linux系统,在主机和开发板之间建立交叉编译环境以及QT和QT/Embedded的GUI的开发环境。提出了基于嵌入式QT界面中应用程序的设计方法,在此基础上设计并实现了具有加、减、乘、除四则运算功能的数学运算器,实现了基于QT的嵌入式应用程序的设计,应用程序可以在开发板上正常运行。

嵌入式;Linux;QT Designer;交叉编译;移植

0 引言

随着用户要求的不断提高,越来越多的嵌入式设备使用功能强大、价格低廉的嵌入式Linux作为操作系统并开始采用较为复杂的图形用户界面。本文在基于微处理器S3C2440的ARM开发板和PC机上共同建立Linux环境[1-2],在PC的Linux系统中利用QT设计了一款多功能数学运算器,调试成功后对其进行交叉编译并移植到开发板上进行实现[3-4]。

1 基于QT的程序设计

QT Designer是用来设计和实现用户界面并能够在多平台下使用的一种工具。通过使用纯C++语言开发来支持嵌入式Linux系统,采用QT/Embedded作为GUI来提供强大的用户界面[5],实现一个开放式的接口来增强扩展性,利用内核帧缓冲来输出,消除对特定架构的依赖,从而保证应用程序的可移植性[6]。

1.1 QT的编程机制

QT与其他GUI最大的不同就在于它提供了“信号与插槽”机制。这一机制提供了对象间的通信机制,它易于理解和使用,并完全被QT图形开发环境所支持,可以取代原始的回调和消息映射机制;信号与插槽是迅速的,类型安全的[7],健壮的,完全面向对象并用C++来实现的一种机制。QT的窗口在事件发生后会激发信号。信号与插槽机制以警告的方式报告类型错误,而不会使系统产生崩溃[8]。

1.2 设计应用程序

进入Linux环境后单击右键,弹出一个列表,选择“打开终端”。打开终端之后,逐次输入以下命令:

口令运行结束后即可进入QT designer环境,新建一个名为 calculator.pro的工程并保存在/root/calculator目录下,同理新建对话窗口,此时在 QT designer中出现的form1窗口中,修改 Property Editor的各项值。并在主窗体“form1”的空白处双击鼠标左键,弹出对话框“Creating ui.h file”,选择“Yes”,即可出现编辑窗口,此时需在函数体中添加槽[9]。槽代码的流程图如图1所示。

图1 槽代码流程图

1.3 生成Makefile文件并编译

在完成了相应代码的程序设计之后,首先要在PC机上编译出可执行文件,从而在移植之前检查所设计数学运算器的界面和功能[10],具体的操作如下所示:

运行calculator可执行文件之后,就可以看到设计的数学运算器了。接下来要测试的就是该运算器的具体功能了,因为在设计中,运算器的运算功能是由信号和槽决定的,所以检查运算器的功能就可以得知所设计的槽是否正确。

2 编译并移植应用程序

2.1 交叉编译环境的建立

交叉编译就是在一个平台上生成另一个平台体系上的可执行代码。由于一般通用计算机拥有非常丰富的系统资源、而对大多数嵌入式系统来说,由于目标平台的执行能力或系统资源有限而且没有相关的编译工具,因此,嵌入式系统的开发需要借助主机(通用计算机)来编译出目标机的可执行代码,交叉编译是唯一可行的编译方式。根据图2可以建立嵌入式系统的交叉编译环境。其具体步骤如下:

图2 交叉编译环境

由于环境变量的设置非常重要,它关系到能否正确的安装及编译这些安装包[11]。通过下面口令修改环境变量,

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

重新指定编译环境的路径后,要使更改的环境变量生效,一般的做法是重新登录,运行 source/etc/profile可以使导出的环境变量马上生效,避免重启。通过以下测试:

测试完毕后,终端显示为:/root/tools/2.95.3/bin/arm-linux-gcc,这表明 cross-2.95.3 编译环境安装成功。

2.2 QT/X11和QT/E的安装

由于QT库是通过使用X11库来实现,并且使用X窗口系统[12]。因此可以基于cross-2.95.3编译环境的成功安装,首先安装QT/X11,依次执行如下口令即可:

经过编译后,QT/X11就安装成功了;安装完交叉工具链之后,就要对QT/E软件包进行编译了,依次执行如下命令[13]:

编译过程结束后,生成库文件,这样QT/E就安装成功了。

2.3 程序的移植

由于QT/E是基于QT的嵌入式GUI的交叉开发平台,其底层图形引擎基于帧缓冲,进行如下环境变量的修改[14],然后依次执行以下口令:

这样就可以生成在开发板(S3C2440)上运行的可执行文件calculator了。

3 应用程序的调试

将上述可执行文件复制到开发板的文件系统中的/root/qt/bin目录下,并用目录/root/tools/qtembedded-free-3.3.4下的lib库文件替换文件系统中的/root/qt目录下的lib库文件,用产生的开发板文件系统的压缩形式root.cramfs替换Linux文件系统中的tftpboot目录下的文件[15]。

这样就可以在开发板的触摸屏上就可以看到如图3所示的运算器的界面了[16]。通过对数学运算器的设计流程,完成了从主机开发、编译、移植到开发板上成功运行的开发步骤。

图3 开发板上显示出的计算器

4 结语

嵌入式Linux系统能很好地支持应用程序的多样性和实时性,通过QT designer固有的槽机制,以小型数学运算器为例设计相关的程序,经过安装X11和QT/E使交叉编译好的可执行代码能够成功运行在S3C2440平台上。

本文完成了X86体系和ARM体系下应用程序的设计、编译与调试过程,实现了嵌入式系统的良好移植性以及核心的代码的可重用性。后期开发只需通过较小的修改就能将应用程序移植到具有不同操作系统的硬件平台上,可以广泛使用在各种嵌入式系统中。

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

[2] 李敏杰,昂志敏,文建阔,等.基于 Linux的便捷式移动终端设计与实现[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数据采集与分系统设计[J].实验室研究与探索,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的超声波测距系统设计与实现[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] 陈永强,陶 品,王笃强.嵌入式Linux移植[J].实验室研究与探索,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构建具有实时网络的嵌入式Linux系统[J].计算机工程与应用,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操作系统窗口设计[M].北京:电子工业出版社,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的研究与开发[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下可视化打印设计[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.操作系统——内核与设计原理[M].4版.魏迎梅,王涌等译.北京:电子工业出版社,2001.

[14] Scott Maxwell,Linux内核源代码分析[M].冯 锐,邢 飞,刘隆国等译.北京:机械工业出版社,2000.

[15] Daniel Solin著,袁鹏飞译.24小时学通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

国家自然科学基金(61106026);陕西省自然科学基金(2013JM5002)

田 磊(1980-),男,天津人,硕士,讲师,主要研究方向:嵌入式系统、嵌入式Linux系统的图形研究。

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

猜你喜欢

环境变量开发板应用程序
从桌面右键菜单调用环境变量选项
彻底弄懂Windows 10环境变量
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
浅析单片机开发板的设计与制作
基于三阶段DEA—Malmquist模型的中国省域城镇化效率测度及其收敛分析
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板
三星电子将开设应用程序下载商店