利用博创2410s实验箱进行qt开发经验总结(下)

 

3.3 建立本机Qtopia 虚拟平台

一、实验目的

1. 了解在Linux 下安装Qtopia 的基本步骤;

2. 学会在Qtopia 平台发布应用程序;

二、实验内容

1. Linux 下编译和使用Qtopia 平台;

2. Qtopia 平台上发布一个简单程序;

三、预备知识

1. 熟悉使用C++语言程序设计;

2. 掌握Linux 下常用编辑器的使用;

3. 掌握Linux 下程序编译;

4. 熟悉Qt 程序设计;

四、实验室设备和工具

1. 硬件:PC 端主机,UP-NETARM2410-S 目标板;

2. 软件:Redhat Linux9.0 for PC minicom Embeded Linux for 2410

tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz

qt-embedded-2.3.10.tar.gz qt-x11-2.3.2 .tar.gz

五、实验步骤

Qtopia TrollTech 公司为采用嵌入式

Linux系统的消费电子设备而开发的综合应

用平台, 它是基于Qt/Embedded 的。使用

Qt/Embedded不仅可以开发Qtopia也可以用

来开发面向Qtopia的第三方软件。它包括三

个版本:Qtopia手机版Qtopia PDA版和Qtopia

消费电子产品平台。

将本次实验所需的四个文件拷贝到

/root/2410sQt 目录下,我们以下的实验都是在这个目录下进行的。

宿主机上建立虚拟的Qtopia 环境需要以下几个步骤:

1. 解压缩安装文件:前面已经解压出来的文件不可在这里直接使用,须重新解压

① 解压缩qtopia

tar xzf qtopia-free-source-2.1.1.tar.gz

export QPEDIR=$PWD/qtopia-free-2.1.1

② 解压缩tmake

tar xzf tmake-1.13.tar.gz

export TMAKEDIR=$PWD/tmake-1.13

③ 解压缩Qt/X11

tar xzf qt-x11-2.3.2.tar.gz

export QT2DIR=$PWD/qt-2.3.2

解压缩Qt/Embedded

tar xzf qt-embedded-2.3.10-free.tar.gz

export QTEDIR=$PWD/qt-2.3.10

2Build Qt/X11

cd $QT2DIR

export TMAKEPATH=$TMAKEDIR/lib/linux-g++

export QTDIR=$QT2DIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -no-xft //出现选项选yes

make

cp bin/uic $QTEDIR/bin/

3Build Qvfb

export TMAKEPATH=$TMAKEDIR/lib/linux-g++

export QTDIR=$QT2DIR

export PATH=$QTDIR/bin:$PATH:$TMAKEDIR/bin

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

cd $QTEDIR/tools/qvfb

tmake -o Makefile qvfb.pro

make

mv qvfb $QTEDIR/bin/

4Build libqte

cd $QTEDIR

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

export QTDIR=$QTEDIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

cp -f $QPEDIR/src/qt/qconfig-qpe.h src/tools/

./configure -system-jpeg -no-xft -qconfig qpe -qvfb -depths 4,8,16,32

make sub-src

5Build Qtopia

cd $QPEDIR

export QTDIR=$QTEDIR

export PATH=$QPEDIR/bin:$PATH

./configure

make

和前面编译Qt/Embedded 的基本步骤一样,还可以参考“./configure --help”,来进

行选择。若 编译时出错提示缺少uuid 库,可将src/e2fsprogs-libs-1.37.tar.gz 解压,

在其中找到缺少的库文件并拷贝到/usr/lib 中。

为了保证qvfb 能够正确显示qtopia 的结果,我们必须保证环境变量设置正确,我们

可以通过“env”命令来检查下面的环境变量,也可以用下面的方法来检查。

echo $QPEDIR

/root/2410sQt/qtopia-free-2.1.1/

echo $QTDIR

/root/2410sQt/qt-2.3.10

echo $LD_LIBRARY_PATH

/root/2410sQt/qtopia-free-2.1.1/lib:/root/2410sQt/qt-2.3.10/lib:/root/2410

sQt/qt-2.3.2/lib:

echo $PATH

/root/2410sQt/qt-2.3.10/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/loca

l/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

出现上面的结果就可以正常的显示Virtual framebuffer我们可以通过下面的命令在

Virtual framebuffer 中实现Qtopia

cd $QPEDIR/bin

qvfb &

sleep 10

./qpe.sh

3.3-2 Virtual framebuffer 下的Qtopia

Qtopia 还为我们在Qtopia 平台上发布自己的应用程序提供了一个比较简便的方法,要

想把我们的应用程序发布到Qtopia 平台上,我们需要三个文件:一个执行文件、一个启动

器文件、一个图标文件。执行文件也就是我们前面讲到的编译链接后生成的可执行文件,

我们可以根据我们的需要编译链接生成到底是宿主机上运行的程序还是开发板上运行的程

序。图标文件就是一个.png 文件,我们制作自己的22×22 大小的图标文件。启动器文件是

一个.desktop 文件,我们可以用vim 手工编写自己的启动器文件,以上一节progressbar

为例,我们创建一个名为progressbar.desktop 的启动器文件,具体内容如下:

[Desktop Entry]

comment=A progressbar Program

Exec=progressbar

Icon=progressbar

Type=Application

Name=UP-TECH

以上内容都做好后,我们需要把我们的三个文件分别复制到相应的目录中.

将图标文件progressbar.png 复制到/root/qtopia/qtopia-free-2.1.1/pics

将执行文件progressbar 复制到/root/qtopia/qtopia-free-2.1.1/bin

progressbar.desktop 复制到/root/qtopia/qtopia-free-2.1.1/apps/Applications

将上诉文件分别复制好以后就可以再次启动Qtopia,我们就可以看到我们自己发布的

程序了。

3.3-3 发布程序到Qtopia

 

3.4 Qtopia2.1.1 2410-S 上的移植

一. 实验目的

qtopia 移植到2410-S 板所使用的linux-2.4.3 上;了解如何在pc (x86)

如何为xscale(arm)编译、移植应用程序。

二. 实验内容

了解Qtopia 2410-s 上的移植过程。交叉编译Qtopia 所需要的资源文件和环境,

交叉编译Qtopia 源代码。下载生成的Qtopia 系统到开发板。

三. 预备知识

1. C 语言基础。

2. 会使用LINUX 下常用的编辑器。

3. 掌握Makefile 的编写和使用。

4. 了解Linux 下的编译程序与交叉编译的过程。

四. 实验设备及工具

硬件:UP-NETARM2410-S 嵌入式开发板、PC Pentumn500 以上, 硬盘10G 以上

软件:PC 机操作系统REDHAT LINUX 9.0 MINICOM ARM-LINUX 开发环境

五. 实验原理

Qtopia 概述

Qtopia Trolltech 面向嵌入式Linux 的综合应用平台。Qtopia 包含完整的应用层、

灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。

Qtopia 的组件:

3.4-1

窗口操作系统

游戏和多媒体

工作辅助应用程序

同步框架

PIM应用程序

Internet应用程序

开发环境

输入法

Java 集成

本地化支持

个性化选项

无线支持

目前在sitsnag 平台上使用的qtopia 版本为1.5.0 free,是面向PDA 的一个版本,

当然它也有面向手机的版本。

Qtopia PDA 版是一个强大的平台,专用于基于Linux操作系统的PDA(个人数字助理设备)。许多PDA 都已采用了Qtopia, Qtopia PDA 版已经成了事实上的Linux 标准,它代表了可行的第三种”PDA 设计方案。Qtopia PDA 版具有可定制的用户界面,支持更大的屏幕尺寸以及横向和纵向布局。

3.4 -1 Qtopia层次结构

六 实验步骤

1.实验可以分为以下几个步骤进行:

(1) 在装有linux pc 机上安装交叉编译环境。

安装光盘时所安装的编译器版本较低,不能正常编译QT 程序,所以编译前需要安装

Qt/tools/arm-linux-gcc-3.4.1.tar.bz2,并在/root/.bash_profile 中修改编译器搜索路径。

(2) 编译库文件:

(3) 编译qt-x11-2.3.2:

(4) 编译安装qt-embedded-2.3.2

(5) 编译安装QTOPIA

(6) 将需要拷贝到开发板上的文件整理到一个单独的文件夹里面

在本次实验中,buildqtopia.sh 文件已为大家做好了以上几步,我们可以直接运行该文件进

行编译。大家可以分析buildqtopia.sh 内容,掌握编译的步骤。

2. 编译步骤:

cd src

./buildqtopia.sh

当编译完成后,在src/qtopia-free-2.1.1/image/opt/Qtopia 下是编译完成的Qtopia 桌面环境。

说明:

在编译完成后,src 下的各个目录对应如下软件包:

e2fsprogs-libs-1.37 ext2 文件系统工具包,Qtopia 用到了其中的libuuid

e2fs-install      ext2工具包编译结果

jpeg-6b jpeg    解码库

jpeg-install      jpeg编译结果

tslib        触摸屏工具包

tslib-install           触摸屏工具包编译结果

tmake-1.13     tmake工具,编译Qtopia 时需要使用

qt-2.3.2 Qt/X11-2.3.2    及编译结果, 编译Qtopia 时需要使用其中的工具

qt-x11-free-3.3.4    Qt/X11-3.3.4 及编译结果,编译Qtopia 时需要使用其中的工具

qt-2.3.10        Qt/Embedded 2.3.10 及编译结果

qtopia-free-2.1.1    Qtopia 2.1.1 及编译结果

 

 

3. 安装步骤:

3.1 Qtopia

cd qtopia-free-2.1.1/image/opt/

tar cvjf /root/share/qtopia-install.tar.bz2 Qtopia

/root/share /qtopia-install.tar.bz2 下载到目标机,并解压缩到/mnt/yaffs 下。

3.2 相关文件

src/qtopia.sh 下载到目标机的/mnt/yaffs/Qtopia 目录下.

src/e2fs-install/lib/libuuid.so*下载到目标机的/mnt/yaffs/lib 目录下

src/jpeg-install/lib/libjpeg.so*下载到目标机的/ mnt/yaffs/lib 目录下

tools/usr/local/arm/3.4.1/arm-linux/lib/libgcc_s.so*下载到目标机的/ mnt/yaffs/lib 目录下

tools/usr/local/arm/3.4.1/arm-linux/lib/libstdc++.so*下载到目标机的/ mnt/yaffs/lib 目录下

3.3 目标机上的处理

在目标机上执行:

cd /usr

ln -s /mnt/yaffs/Qtopia qpe

cd /mnt/yaffs/Qtopia

mkdir tmp

4 运行:

插上USB 鼠标,在目标机上执行qtopia.sh 即可运行qtopia 桌面环境。

注意:1.如果运行./qtopia.sh 后提示找不到库文件,请从编译器目录下查找,并拷贝到开

发板/mnt/yaffs/lib 中。

2.如果提示:can’t open framebuffer device /dev/fb0 可以执行:ln –sf /dev/fb/0 /dev/fb0

3.如果提示:Qt/Embedded data directory is not owned by user 0:/tmp/qtembedded-0

运行:chown root:root /tmp/qtembedded-0

4.如果提示:Qtopia data directory is not owned by user 0:/tmp/qtopia-0

运行:chown root:root /tmp/qtopia-0

六. 思考题

1.请思考Qtopia framebuffer 的机制。

 

 

总结篇:

1.安装vmware,安装redhat-linux

2.按照指导书,安装博创linux开发环境;

3.配置网络、nfs服务等;

4.完成以上四个qt相关实验

=============================================================

重建目标机文件资源(移植咱们自己的qtopia)的步骤:

删除/mnt/yaffs/Qtopia下的东西

删除/mnt/yaffs/Qtopia下的东西

解压原厂光盘下img下的yaffs.tar.bz2/mnt/yaffs

因为/mnt/yaffs/所占空间太多,可以将这个目录下无关的文件删除

甚至可以只保留Qtopia/lib/lost+found/目录,不过建议保留触摸屏的目录和库

====================== lib files to arm board =================

下面所指定位置下的lib库文件,很多都是链接文件。

为保证正确性,一般用命令行的压缩命令将相关文件压缩;

然后把压缩文件所在目录挂载到目标板,在目标板终端解压到/mnt/yaffs/lib

.tar.bz2

解压:tar -jxvf xxx.tar.bz2 -C /xxx/xx

压缩:tar –jcvf xxx.tar.bz2 DirName

============================================================

出错的原因一般是:

直接复制就会把原来的链接文件转换成为原始文件,

这样运行时无法保证库的一致性,就会出错;而且会耗尽目标机的memory

指导书却只字未提,害了我相当多的时间(痛恨ing

============================================================

 

<1>. 解压qtopia-install.tar.bz2/mnt/yaffs/

       这个压缩文件是实验四指导下制作的,其实就是编译成功了的qtopia镜像文件系统

 

<2>. qt2.3.10/lib/libqte.so* 下载到目标机的/usr/lib

libqte.so

libqte.so.2

libqte.so.2.3

libqte.so.2.3.10

 

<3>. qt2.3.10/lib/fonts 下载到目标机的/mnt/yaffs/lib/fonts

 

<4>. src/e2fs-install/lib/libuuid.so*下载到目标机的/usr/lib

libuuid.so

libuuid.so.1

libuuid.so.1.2

 

<5>. src/jpeg-install/lib/libjpeg.so*下载到目标机的/usr/lib

libjpeg.so

libjpeg.so.62

libjpeg.so.62.0.0

 

<6>.tools/usr/local/arm/3.4.1/arm-linux/lib/libgcc_s.so*下载到目标机的/mnt/yaffs/lib/目录下

libgcc_s.so

libgcc_s.so.1

 

<7>.tools/usr/local/arm/3.4.1/arm-linux/lib/libstdc++.so*下载到目标机的/mnt/yaffs/lib/目录下

libstdc++.so

libstdc++.so.6

libstdc++.so.6.0.1

 

<8>.root/2410sQt/tslib-install/lib/下的libts*复制到目标板/mnt/yaffs/lib/

libts-0.0.so.0

libts-0.0.so.0.1.0

libts.la

libts.so

----------------------

< >.正常情况下,目标机/mnt/yaffs/lib下应该还有:

libbluetooth.so

libbluetooth.so.1

libbluetooth.so.1.0.16

libeg-1.2.so.0.0.0

libfhas2-1.1.so.0.0.0

libglib-1.2.so.0

libglib-1.2.so.0.0.10

libncurses.so.5.2

libpdag-1.2.so.0.0.0

这些应该是厂商提供的yaffs.tar.bz2下包含的东西

 

===========================================

完成后,个文件所占的空间:

1.du -s(查看当前目录所占空间)

/mnt/yaffs/lib/fonts/   ---------13.4 MB

/mnt/yaffs/lib/         ---------25.1 MB

/mnt/yaffs/Qtopia       ---------22.9 MB

/mnt/yaffs/             ---------48.1 MB

 

===========================================

接下来还应该在/nt/yaffs/Qtopia/下建立tmp/目录

 

===============================================

要想联机执行你自己的程序,而非在开发板直接运行:

export QTDIR=/usr

cd xx/

./xxx

即可

===============================================

==============================================

要想联机执行你自己的程序,而非在开发板直接运行:

export QTDIR=/usrcd xx/./xxx即可

===============================================

制作自己的程序:

打开qt-2.3.2/bin/下的designer(这是2.x版本的qtdesigner

qtdesigner3开发的程序不能在qtopia2.1.1上跑

不兼容

designer可以生成xx.ui文件

然后uic -o xx.h xx.ui

uic -o xx.cpp -impl xx.h xx.ui

tmake-1.3.1/bin/progen -t app.t xxx.pro

tmake-1.3.1/bin/tmake -o makefile xxx.pro

make

即可生成可执行文件

你可能感兴趣的:(嵌入式QT学习)