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

2015-09-28 05:04卢爱红
现代计算机 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.

猜你喜欢
开发板跨平台嵌入式
跨层级网络、跨架构、跨平台的数据共享交换关键技术研究与系统建设
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
一款游戏怎么挣到全平台的钱?
基于STM32H7的FDCAN通信系统设计与实现∗
TS系列红外传感器在嵌入式控制系统中的应用
搭建基于Qt的嵌入式开发平台
基于C++语言的跨平台软件开发的设计
浅析单片机开发板的设计与制作
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
基于B/S的跨平台用户界面可配置算法研究