嵌入式移植Qtopia到ARM开发板简介

ARM

36人已加入

描述

阐述了Linux在嵌入式系统上的实现方法,针对嵌入式圈形用户界面QtE进行了简要介绍,并简单描述了Linux操作平台的建立,着重分析了qtopia移植到S3C2410的过程。

1、Qt/Embedded简介

    Qt/Embedded(简称QtE)是一个专门为嵌入式系统设计的图形用户界面(Graphical Uset Interface简称Gin)的工具包。Qt是挪成Trolltech软件公司的产品,它为各种系统提供图形用户界面的工具包,QtE是嵌入式版本。

    QtE拥有同Qt一样的API,开发者只需了解Qt的API,不用关心程序所用到的系统和平台。QtE是模块化和可剪裁的,它的结构很好的优化了内存和资源的利用。同时它拥有自己的窗口系统,可以直接对底层的图形驱动进行操作。QtE可以应用在所有主流平台和CPU上,支持所有主流的嵌入式Linux,对于在Linux上的QtE的基本要求只不过是Frame Buffer设备和一个C++编译器。而且QtE还提供压缩字体俄格式,即使在很小的内存中,也可以提供一流的字体支持,支持多种的硬件和软件的输入,支持Unicode、反锯齿文本和Alpha混合的图片。

2 Qtopia简介

    Qtopia是Trolltech公司在QtE的基础上开发的一个应用环境,这个应用环境特为移动和手持设备开发,其特点就是拥有完全的、美观的GUI,同时它也提供可上百个应用程序用于管理用户信息、办公、娱乐、Internet交流等。

    Qtopia是一种全方位的应用开发平台,它可用于基于嵌入式linux的PDA,移动电话,web pads,以及其他移动计算设备。Qtopia构建于Qt/Embedded之上,是专为基于linux的消费电子产品提供和创建图形用户界面而设计的。常见的有两种版本:

   Qtopia Phone版:专为基于linux的智能电话和多功能电话设计。

   Qtopia PDA版:专为基于linux的PDA设计 ;

   Qtopia的特点是,视窗操作系统;同l步窗口;开发环境;本地化支持;游戏和多媒体.PIM应用程输入法;个性化选项;intemet应用程序;java集成;无线支持。

3、Ot/Embedded开发

   QT/Embedded通过Qt API与LinuxI/O设施直接交互,成为嵌入式linux端口。同Qt/Xl 1相比,QT/Embedded很节省内存,其不需要一个X服务器或是Xlib库,它在底层摈弃了xⅡb,采用framebuffer(帧缓存)作为底层图形接口。

    同时, 将外部输入设备抽象为keyboard和mouse输入事件。 QT/Embedded的应用程序可以直接写内核缓冲帧,这可避免开发者使用繁琐的Xlib/Server系统。

    嵌入式软件开发通常都采用交叉编译的方式进行,基于Qt/Embedded;fIJ Qtopia的GUI应用开发也采用这样的模式。先在宿主机上调试应用程序,调试通过后,经过j交叉编译移植到目标板上。

Qt/Embedded直接写入帧缓存,在宿主机上则是通过q v f b (v i r t u a 1 .framebuffer)来模拟帧缓存。qvfb是x窗J口用来运行和测试Qtopia应用程序的系统程序。qvfb使用了共享内存存储区域(虚拟的帧缓存)来模拟帧缓存并且在一个窗口中模拟一个应用程序来显示帧缓存,显f示的区域被周期性的改变和更新。

4、建立Linux操作平台

4.1安装交叉编译器

    由于Linux内核对交叉编译器有很大的依赖,所以不同版本的Linux需要相应的编译器,在这里所用的是Redhat 9,内核是2.4的,用cross一2.95.3是可以的。利用SSH工具~gWindows下的交叉编译器的安装包拷到Linux的/usr/local/arm下,如果没有则需要新逢目录。进入该目录输入以下命令进行加压安装:

# tar jxvf croSS 2.95.3.tar.bz2

解压完后新建路径,输入:

# export PATH=$PATH :/usr/

local/arm/2.95.3/bin

因为编译QT需要更高版本的编译器,所以这里再安装cross一3.3.2方法同上。

4.2编译内核

    在根目录下新建$3C2410,把内核源码拷到该目录下,解压,生成目录2。4.18一rmk7,进入该目录,配置内核,一般用的较多的是菜单配置,输入:

# make menuconfig

配置完以后选择默认保存,输入以下命令进行编译:

# make dep (建立依赖关系,如果要重新编译,则需用make clean命令)

# make zImage

编译完后在2.4.18-rmk7/arch/arm/boot下生成zlmage镜像文件,烧写到板子Flash的1分区中。

4.3 Bootloader

Bootloader简单的说就是在操作系统内核运行之前运行的一小段程序,通过这小段程序我们可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,其主要任务是将内核映像从硬盘读到ARM中,然后跳转到内核的入口点去运行,即开始启动操作系统。在这里所用的Bootloader是U—boot-1.1.4。

把U boot—1.1.4.tar.bz2拷到根目录的S3C2410中,解压后生成u—boot一1.1.4目录,进入该目录,进行编译。输入:

# make smdk2410 config

# make cross—C0MPILE=armlinux一(由于已经能够生成路径,如果编译不通则输入完整路径:m a k ecross COMPILE=/usr/local/arm/bin/arm—linux )

生成U boot.bin文件烧制到ARM板子里。

5、移植qtopia

5.I所用资源

硬件:恒丰HFRK 24i 0B,三星$3C2410 ARM 920t

软件:cross-2.95.3.tar.bz2

cross-3.3.2.切r.bz2

Linux 2.4.18.tar.gz

qt—xl1—2.3.2.tar.gz

qt—embedded一2.3.7.tar.gz

qtopia free一1.7.0.tar.gz

tmake一1.11.tar.gz

jpegsrc.v6b.tar.gz

e2fsprogs 1.35.tar.gz

5.2移植qtopia

以上创建了Linux操作平台,可以移植QT了,首先在根目录下新建一个目录这里假设为Q T,可以利用S S H 远实现windows和Linux下的文件按共享,上传和下载资料和文件,假设所用源文件已经下载flwindows中,从SSH拷贝fIJLinux/Qt下,在Qt下建立两个新目录。

mkdir qt——x86

mkdir qt—am

qt—x86存放宿主机上虚拟Qt环境,qt—arm存放目标板Qt环境。

5.2.1宿主机移植所需工具及环境变量声明

①Tmake一1.1l 生成Makefile文件环境变量:T M A K E D I R /TMAKEPATH/PATH

②Qt—xl1—2.3.2 Qvfb一虚拟帧缓存工具器

Uic一用户界面编辑器

Designer Qt图形设计器

环境变量:LD— LIBRARY— PATH一/PATH

③Qt—embedded一2.3.7 Qt库支持libqte.so

环境变量:Q T E D I R /LD— — LIBRARY— — PATH— — /PATH

④Qtopia free一1.7.0 应用程序开发包、桌面环境

环境变量:Q P E D I R /LD— LIBRARY— PATH/PATH

5.2.2建立宿主机上Qt虚拟环境

(1)解压qt—xl1 2.3.2.tar.gZ并将生成的qt一2.3.2一xll文件改名为qt

cd /Qt/qt——x86

tar zxvf../qt—xl 1-2.3.2.tar.gz

mv qt-2.3.2 qt

解压qt-embedded 2.3.7.tar.gz并将生成的文件改名为qte

tar zxvf ../ qt-embedded 2.3.7.tar.gz

mv qt-embedded一2.3.7 qte

解压qtopia—fre 1.7.0.tar.gz,并改名为qpe

tar zxvf ../qtopia free—1.7.0.切r.gz

mv qtopia—free一1.7.0 qtp

解压tmake-1.11.tar.gz,并改名为tmake

tar zxvf../tmake-1.11.切r.gz

mv tmake 1.I1 tmake

交叉编译jpegsrc.v6b.tar.gz得到libuuid

tar zxvf../jpegsrc.v6b.tar.gz. /configure

m ake

make install

交叉编译e2fsprogs一1.35.tar.gz,生成libjpeg.8o

. /configure

make

得到libtools程序

. /configure

修改生成的Makefle文件:

prefix = /arm——target/qte

C C /usr/local/arm/2.95.3/bin/arm—linux-gcc

AR= /usr/local/arm/2.95.3/bin/arm—linux -ar rc

AR2= /usr/local/arm/2.95.3/bin/arm—linux-ranlib

cp jconfig.doc jconfig.h

mkdir -p /arm——targetqte/man/man1

make

cpⅡbjpeg.so/usr/local/arm /2.95.3/arm linux/lib

(2)设置环境变量

cd /Qt/qt——x86

export QTDIR=$PWD/qt

export QTEDIR=$PWD/qte

export QPEDIR--$PWD/qpe

export PATH=$QPEDIR/bin:$QTEDIR/bin:$QTDIR/bin:$PATH

expert PATH=$QTEDIR/tmake/bin:$PATH

export TMAKEPATH=QTEDIR/tmake/lib/qws/linux-generic-g++

e x P o r tLD LIBRARY—PATH=$QPEDIR/lib:$QTEDIR/lib:

$QTDIR/lib:$LD—LIBRARY—PATH

(3)编译

① qt

cd$QTDIR

ls

运行configure文件,中间提示,输入yes即可,可用以下命令跳过echo yes I./configure(后面可以加一些参数)

make

生成运行qvfb的tools

make—C tools/qvfb

mv tools/qvfb/qvfb bin

cp bin/uic$QTEDIR/bin

cd ..

② qte

export QTDIR=$QTEDIR

export QTEDIR=$QTEDIR

export QPEDIR=$QPEDIR

cd $QTEDIR

cp $QPEDIR/src/qt/qconfig—qpe.h

src/tools/

echo yes I./configure-qconfig qpe

— — system——jpeg ——gif——qvfb ——thread

depths\ 4,8,16,32

make sub-src

③ qpe

expo rt QTDIR=$REAL—QTEDIR

expo rt QTEDIR=$REAL—QTEDIR

expo rt QPEDIR=$REAL—QPEDIR

cd $QPEDIR/sre

./configure

make

以上就完成宿主机上的虚拟环境构建,启动一下虚拟帧缓存,在sheH里运行:

cd QTDIR/bin

. /qvfb depth 32 width 640一height 480

就可以调出xl l下虚拟镇缓冲的设备。其中一depth32参数表示颜色深度为32位,一width 640一height 480参数表示镇缓冲分辨率为640(宽) 480(高)。

. /qpe

5.2.3移植

cd/Qt/qt-arm

tar zxvf../qt-embedded一2.3.7.tar.gz

mv qt-2.3.7 qt

tar zxvf ../qtopia—free 1.7.0.tar.gz

mv qtopia-fre-1.7.0 qpe

tar zxvf ../tmake-1.11.tar.gz

mv tmake-1.11 tmake

export QTDIR=$PWD/at

export QPEDIR=$PW D/qpe

expo rt TMAKEDIR=$PW D/tmake

e x P o r t TM AKEPATH=$TMAKEDIR/lib/aws/linux arm—g++

export PATH=SQTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

e x P o r t  LD LIBRARY— PATH=$QPEDIR/lib:$QEDIR/lib:$LD LIBRARY—PATH

cD bin/uic $REAL—QTEDIR/bin

cd SQTDIR

cp$QPEDIR/src/qt/qconfig qpe.hsrc/tools/

make sub-src

移植QT中的相关设备接El、鼠标、触摸屏、移植qtopia相关设备接口。

编译Qtopia

cd/Qt/qt——arm

expo rt QTDIR=$PWD/qte

expo rt QPEDIR二$PWD/(Ⅱ)e

expo rt

PATH=$QPEDIR/bin:$QTDIR/bin:/home/mic/control—project/daq—roodule/tools/bin:$PATH

export PATH $QTDIR/tmake/bin:$PATH

export TMAKEPATH=$QTDIR/tmake/lib/qws/linux—arm—g++

e x P o r tLD— LIBRARY PATH:$QPEDIR/lib:$QTDIR/lib:$LD—LIBRARY—PATH

cd$QPEDIR/src

. /configure

make

进人qtopia—free一1.7.0目录下,将目录apps,bin,etc,il8n,lib,pics,plugin拷贝到根文件系统的/qtdemo下,增加环境变量

export QTDIR-/qtdemo

将qt embedded和qtopia的库拷贝到/qtdemo/lib目录下,将字体目录fonts拷贝到/qtdemo/lib目录下,就可以运行/qtdemo/bin目录下的qpe。

6 结束语

    嵌入式系统已经,一泛的应用到电子产业中,它的开源、模块化和可剪裁极大的节l省了资源,QtE作为嵌入式GUI也倍受青!睐,它不但延续了Qt桌面系统的所有功能,而且节省空间和内存。qtopia专为linux的消费电子产品提供和创建图形用户界面而设计的,具有美观的GUI。本文主要介绍了它移植到S3C2410-ARM9开发板的过程,利用宿主机搭建的虚拟环境,再对qtopia进行编译,完成到三星HFRK2410 j的移植。Qtopia良好的图形用户界面和它紧凑的模块化结构在电子产品界一定会得到迅速的发展。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分