APP下载

基于ARM的Qt/Embedded嵌入式环境部署

2015-09-28卢爱红

现代计算机 2015年33期
关键词:开发板跨平台嵌入式

卢爱红

(苏州经贸职业技术学院,苏州 215009)

基于ARM的Qt/Embedded嵌入式环境部署

卢爱红

(苏州经贸职业技术学院,苏州215009)

0 引言

基于ARM的嵌入式产品,因CPU具有较高的主频、丰富的接口、优越的可移植性等性能,能适应各种嵌入式要求,得到了广泛的应用。在嵌入式终端设备中,一般要求具有可视化界面。目前几种常用的嵌入式界面包括:MiniGUI、MicroWindows、DinX、OpenGUI和Qt/Embedded。由Trolltech公司开发的Qt/Embedded嵌入式界面开发环境,是完全面向对象思想的C++开发软件,提供应用程序开发者艺术级图形界面设计所需要的功能,能编程实现嵌入式开发板上各种形式接口,如:网口、串口、I2C、USB、I2S等,应用灵活,性能优越。由于ARM嵌入式产品的硬件软件资源与个人电脑相比是有限的,不能提供在ARM产品上直接编辑、编译图形用户界面(GUI)的功能,需要通过交叉编译环境,将Linux发行版本中调试好的GUI界面部署到ARM产品。Qt/Embedded是为跨平台软件开发人员设计的,提供了支持Linux发行版本和Windows的Qt集成开发环境(IDE)、持续更新版本的Qt库,将交叉编译生成的Qt库作为IDE的交叉编译工具链,同时将Qt库部署到嵌入式开发板,可以轻松实现跨平台的GUI设计。

1 跨平台GUI设计

本设计中基于Qt/Embedded进行跨平台的GUI设计的主要任务是在Linux发行版本或Windows的Qt集成开发环境中编辑设计GUI界面,经过交叉编译后,部署到ARM开发板中运行。具体过程为:在Linux发行版本Ubuntu中安装Qt集成开发环境Qt Creator和交叉编译工具链arm-linux-g++,再交叉编译生成版本为Qt4.8.1 的Qt库,在Qt Creator的 “构建和运行”中指定Qt库Qt4.8.1的qmake,并将Qt4.8.1部署到ARM开发板,如此,Qt Creator中编辑的GUI界面程序就可以在ARM开发板上运行,实现GUI图形用户界面的跨平台设计。

跨平台GUI设计的流程[1]如图1所示。

图1 跨平台GUI设计的流程

2 IDE环境配置

Qt的集成开发环境(IDE)采用Qt Creator应用程序,可以在Windows平台上运行,也可以在各种Linux发行版本中运行。开发环境基于Ubuntu平台时,集成开发环境的配置需要使用root权限。qt-creator-linuxx86-opensource.bin是Qt Creator的安装程序,通过Ubuntu的samba共享,拷贝到Ubuntu操作系统中,修改安装程序的权限为可执行,运行qt-creator-linux-x86-opensource.bin,自动安装Qt Creator应用程序到Ubuntu操作系统中。具体命令如下:#chmod u+x qtcreator-linux-x86-opensource.bin;#./qt-creator-linuxx86-opensource.bin。

安装Qt Creator之后,新建项目工程仍不具备Application GUI应用,需要安装Qt库文件Qt4.8.1,并配置Qt编译环境qmake。用Ubuntu操作系统的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。执行Qt Sdk中的配置文件configure,在/usr/local/qt-everywhere-opensource-src-4.8.1下执行#./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开发板的文件系统识别的Qt GUI界面设计的可执行文件,需要交叉编译Qt库文件Qt4.8.1,并配置 Qt的交叉编译环境 armqmake。执行Qt Sdk中的配置文件configure,在/usr/local/qt-everywhere-opensource-src-4.8.1下执行#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开发板时,需要将Qt4.8拷贝到此路径。执行以下命令进行编译并安装Qt4.8:#make;#make install。安装完成后,在Qt Creator的“构建和运行”中指定qmake和交叉编译工具链Linux ICC为arm-linux-g++和arm-linux-gdb。配置完成,新建Qt工程,在“项目”菜单栏可以指定交叉编译的qmake和 Linux ICC工具链。编译输出的就是能被ARM开发板的文件系统识别的Qt GUI界面设计的可执行文件。

将Qt4.8部署到ARM开发板时,根据Qt4.8库文件交叉编译时-prefix参数指定的目录,将Qt4.8库文件安装在/opt/Qt4.8目录下,在Ubuntu上将Qt4.8打包,再解压到ARM开发板上的/opt目录下:@#cd/opt;@# tar xvzf Qt4.8.tgz-C/opt。

要在ARM开发板上正确运行Qt的GUI程序,除了要求安装Qt4.8库文件外,还需要编写一个脚本setqt4env,这个脚本用于设置Qt程序所需要的环境变量。脚本文件的位置是/bin/setqt4env。输入以下命令创建 并 编 写 脚 本/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"。

3 实验实现

选用主CPU为S3C2440的开发板,并已烧录好内核和文件系统。开发环境选用Ubuntu12.04版本,安装Qt Creator2.5.1,Qt库文件选用Qt4.8.1,交叉编译工具链选用4.3.4版本。

以一个简单的基于网络的服务器和客户端信息传输的Qt GUI程序为例,说明Qt的嵌入式开发环境部署的流程。一般来说,基于ARM的嵌入式产品,以ARM开发板作为网络的服务器,负责监控现场数据的采集、存储和传输,以PC机作为客户端,客户端主动连接服务器,并查询现场数据,向服务器发送执行操作的指令。在ARM开发板上运行服务器程序,需要在ARM开发板的文件系统中部署Qt的嵌入式环境,服务器程序经过交叉编译后,烧录到ARM开发板,在PC机上运行的客户端程序采用非交叉编译的方法编译,最终,在服务器和客户端设备保证网络连通的基础上,实现通信。

Qt提供了完全使用类封装的socket,用户不需要接触底层的各种结构体。socket的类封装,采用Qt本身的信号-槽机制,使编写的程序更容易理解。在pro文件中添加network模块QT+=network。Qt使用socket类提供的QTcpServer和QTcpSocket进行TCP网络编程。QTcpServer类负责TCP建立 (监听端口),QTcpSocket负责TCP会话(管理客户通信数据)。涉及头文件包括:监听端口的QTcpServer、客户连接管理的QTcpSocket、事件驱动的句柄监听类文件QSocketNotifier。

基于面向对象思想的服务器端Qt程序流程图[2]如图2所示。

图2 服务器端Qt程序流程图

客户端跟服务器端的区别在于不要进行端口监听,使用QTcpSocket类的connectToHost函数连接服务器即可,其它实现与服务端一致。

服务器端程序交叉编译后,部署到ARM开发板,可以与Ubuntu主机中的客户端程序实现稳定流畅的通信。

4 结语

本设计主要实现了Qt的嵌入式环境的部署,实现了Qt的IDE开发环境Qt Creator的交叉编译条件和非交叉编译条件的配置,ARM开发板上的文件系统中的Qt库文件的部署,并在ARM开发板上用脚本程序setqt4env配置Qt运行的环境变量,最终将交叉编译后的Qt程序拷贝到ARM开发板后,能够顺利启动。本设计在Qt设计环境中,以网络传输的服务器和客户端程序为例,提供了以完全面向对象的思想设计Qt的GUI程序的思路,实验证明Qt嵌入式环境部署的方法能够很好地适应各种Linux开发环境和ARM开发板的版本,具有很好的鲁棒性。本系统的设计为ARM开发板的Qt的GUI应用提供了较完整的解决方案和系统化的设计思路,但是功能相对简单,在实际企业应用中,需在此框架设计的基础上,进一步优化细节。

[1]卢爱红.基于Qt/Embedded的水务数据监测系统.计算机时代[J],2014(12):22.

[2]田磊.嵌入式Linux系统中基于QT库的应用程序设计.实验室研究与探索[J],2014,33(5):84.

[3]陈敬,向伟.基于嵌入式Linux的QT/Embedded移植与应用开发.电脑与信息技术[J],2013,21(1):57.

[4]吴子平,徐爱钧.基于Qt/Embedded的嵌入式GUI的研究与构建.电脑开发与应用[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-),女,江苏南通人,讲师,在读博士研究生,研究方向为无线通信、物联网应用技术

2015-11-14

2015-11-20

嵌入式ARM产品对GUI设计的质量要求日益提高,本设计提供在ARM开发板上部署Qt/Embedded嵌入式环境的方法,详细描述Qt/Embedded的集成开发环境的配置过程、Qt的库文件Qt4.8的交叉编译和非交叉编译的方法、ARM开发板的文件系统环境配置流程,最后以Qt环境下网络通信的服务器和客户端程序的设计部署为例,验证该设计方法。实验证明,基于完全面向对象思想的Qt嵌入式GUI界面嵌入式环境部署的可实现性和优越性,为ARM嵌入式产品的界面设计提供了一种有竞争力的解决方案。

Qt/Embedded;GUI;ARM;嵌入式环境

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.

猜你喜欢

开发板跨平台嵌入式
跨平台APEX接口组件的设计与实现
搭建基于Qt的嵌入式开发平台
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
嵌入式软PLC在电镀生产流程控制系统中的应用
基于QT的跨平台输电铁塔监控终端软件设计与实现
基于OPC跨平台通信的电机监测与诊断系统
基于B/S的跨平台用户界面可配置算法研究
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板