找论文网 > 计算机论文 > 计算机应用 >

基于Qt/Embedded的GUI移植及无线网络功能的开发(1)

摘  要  具有友好用户界面的嵌入式系统已成为当今嵌入式相关研究的的热点。本文介绍了系统平台构建,分别叙述了嵌入式Linux内核的配置与编译,Qt/Embedded图形界面系统的移植与开发,以及基于嵌入式Linux的无线网络功能模块的开发与实现。运行结果表明,方案合理,运行可靠。
    关键词  嵌入式Linux;Qt/Embedded;Qtopia;GPRS;无线网络
 
1 引言
    随着信息技术的发展和数字化产品的普及,嵌入式设备被广泛应用。主流的嵌入式操作系统有WinCE,Linux,VxWorks, pSOS, PalmOS等等。Linux的优势在于其完全开放的操作系统,可以给开发者一定的独立性和自由度,允许它们自己掌控自己的产品。另外,是否具有良好的人机图形界面,方便用户操作,是衡量嵌入式设备性能的重要标准。Qt/Embedded是著名的Qt库开发商Trolltech公司开发的基于嵌入式Linux系统的Qt版本,广泛应用的KDE等项目即使用Qt作为支持库,它以良好的代码结构、强大的可定制功能以及统一的API都给用户提供了极高的便利性,QT/Embedded已经逐渐成为GUI的事实标准。
2 嵌入式Linux系统的移植和开发 2.1 硬件开发环境

    硬件系统采用的是Embest EduKit-III开发平台, 采用了SAMSUNG 公司的以ARM9 为内核的处理器S3C2410, 该处理器核心频率可达到200M,具有低功耗、低成本等卓越性能和显著优点,同时具有JTAG 调试等功能;针对掌上智能设备的功能比较复杂,消耗资源较多,选取了64M的SDRAM和128M的Nand Flash,针对此项目的开发,摒弃了一些不必要的模块,保留了USB接口模块,标准串行口模块,显示屏(触摸屏)模块,基于无线通讯功能的实现,选取了Siemens MC35为核心的GPRS无线模块,整个硬件环境如图1所示。

2.2 嵌入式Linux系统内核的配置与移植
    首先,嵌入式系统在运行的初期即在操作系统内核运行之前,需要一段程序初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境,这就是Boot Loader程序[1],这里我们选用了韩国Mizi公司的Vivi引导程序。
     然后是Linux内核的移植,出于实际功能的需要,我们采用了普遍应用于嵌入式系统的2.4.18版的内核。这里有一个相当重要的概念——交叉编译[2]:由于宿主机与目标机的CPU一般不相同,宿主机也就是我们常用的PC机是以X86为核心的,而目标板则是ARM体系结构的,因此需要在宿主机机上建立一个用于目标机的交叉编译环境,也就是将各种二进制工具程序集成为工具链,其中包括如GNU的链接器(ld)、GNU的汇编器(as)、ar(产生修改和解开一个存档文件)、C编译器(gcc)以及C链接库(glibc)等等。这里宿主机采用Redhat9.0,工具链选择了cross-2.95.3交叉编译工具包。下列是工具和内核源文件列表及说明:
--------------------------------------------
◆     binutils-2.11.2  包含有ld、ar、as
等一些产生或者处理二进制文件的工具。
◆    gcc-core-2.95.3 包含GCC的主体部分。
◆    gcc-g++2.95.3   使GCC编译C++程序。
◆    glibc-2.2.4     libc是很多用户层应用都
要用到的库,即C链接库。
◆    glibc-linuxthreads-2.2.4  libc用于支持
Posix线程单独发布的压缩包。
◆    linux-2.4.18+rmk7  Linux的内核及其支持
ARM的补丁包。
-----------------------------------------
    在交叉编译环境建立好以后,可以对内核进行配置并制作映像文件。这里需要注意的是,针对不同开发商提供的硬件要进行不同的配置,并打上相应的补丁程序。
2.3  Qtopia图形用户界面文件系统的移植
    在建立好内核的基础上,要完成根文件系统(root filesystem)的创建。在Linux系统启动时,首先完成内核安装及环境初始化,最后会寻找一个文件系统作为根文件系统被加载,它是Linux系统的核心部分,包含系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件,并作为存储数据读写结果的区域。这里我们选择嵌入式系统常用的CRAMFS文件系统,它是Linux创始人Linus开发的一个适用于嵌入式系统经压缩以及只读的小型文件系统[3]
    在完成无图形界面的CRAMFS文件系统的建立后,这里重点阐述一下带Qtopia图形界面文件系统开发环境的建立和移植。
    Qt/Embedded是Trolltech公司开发的面向嵌入式系统的Qt版本,与X11版本的Qt在最大程度上接口兼容,采用帧缓存(framebuffer)作为底层图形接口。Qt/Embedded类库完全采用C++封装,并且有着丰富的控件资源以及较好的可移植性,大范围的Qt/Embedded API可用于多种开发项目。Qt/Embedded的实现结构如表1所示。
表 1 Qt/Embedded的实现结构

    Qtopia是基于QT/Embedded开发的一个嵌入式的窗口系统和应用程序集,如地址本、图像浏览、Media播放器等,还包括娱乐和配置工具,广泛用于PDA等掌上设备。Qtopia平台由Qtopia 库和Qtopia server/laucher组成。Qtopia server/laucher是控制窗口系统、进程间通信、发起所有应用和其他核心任务的主要服务程序[3]
    整个GUI系统的构建需要对Qt/Embedded、Qtopia依次分别编译,然后有机地整合在一起。Qt/Embedded为Qtopia提供了底层支持,GUI系统的图形库窗口组建都由Qt/Embedded实现。以下构建过程所需工具文件和源码包列表及说明:
----------------------------------------------
◆    Tmake1.11        生成和管理Makefile文件
◆    Qt/Embedded2.3.7 QT的库文件
◆    Qt2.3.2 for X11  为了生成相应的Qt
Designer和qvfb以便在宿主机上开发和调试应用程序
◆    Qtopia 1.7.0     图形用户界面开发包
◆    e2fsprogs-1.35   ext2 文件系统工具包
◆    tslib            触摸屏工具包
◆    pegsrc v6b      jpeg 解码包
----------------------------------------------
    将上述开发包依次解压,然后编译。这里需要注意的是根据运行环境的不同,需要建立两个程序开发环境:一种是针对X86在pc机上运行使用虚拟缓冲帧qvfb(Qt/Embedded Virtual Framebuffer )的开发环境,这样我们就可以先在RedHat9环境下虚拟嵌入式程序的运行,从而节约开发时间。另外一种是针对能够在ARM开发板上运行的程序的开发环境。不同的开发对象要使用不同的编译器,这里就引出了环境变量的设置问题,例如针对ARM板开发时需要定义:
TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
而对能够运行在X86体系结构上的程序则为:
   

共2页: 1 [2] 下一页


IP组播技术及其在视频监控系统中的应用
基于正交有限脊波变换的图像压缩
工商管理 | 工科论文 | 财务管理 | 管理学 | 公共管理 | 财政税收 | 证券金融 | 会计审计 | 计算机 | 法律论文 | 医药学 | 汉语言文学
社会论文 | 工科论文 | 理科论文 | 文化论文 | 艺术论文 | 文学论文 | 哲学论文 | 政治论文 | 英语论文 | 写作指导 | 计算机应用
www.zlunwen.com 找论文网 ® 版权所有 网站地图