《嵌入式系统开发》课程设计基于QT的数码相框设计和实现

更新时间:2024-06-05 14:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于QT的数码相框设计与实现

摘要 随着现代科学技术的飞速发展,人类历史即将进入一个崭新的时代。嵌入式Linux系统已经越来越贴进我们的生活,Linux是最受欢迎的自由电脑操作系统内核。它是一个用C语言和汇编语言写成,符合POSIX标准的类Unix操作系统。嵌入式Linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。本文简要介绍在Linux平台上基于QT编译数码相框,其中运用到了嵌入式Linux内核以及Qt/Embedded嵌入式图形用户界面的技术特点,并重点介绍应用Qt/Embedded移植一个图形界面程序到Mini2440实验板的过程,其中Mini2440实验板,采用S3C2440AL芯片,及Linux2.6.13内核。

关键词 Linux Qt/Embedded QT 嵌入式 S3C2440AL

Compile using qt based on Linux platform digital photo frame

Abstract The modern age rapid development of science and technology, and human history is about to enter a new era. Embedded Linux system has been more and more close to our life, Linux is the most popular free computer operating system kernel. It is a C language and in assembly language, accord with the POSIX of Unix operating system. Embedded Linux is will increasingly popular Linux operating system, can cut out modification in embedded computer system running on an operating system. Embedded Linux inherits the Internet on unlimited resources, and open source operating system has the characteristics of embedded. This paper briefly introduces the Linux platform based on QT in the digital photo frame, compiled using the Embedded Linux kernel and QT to Microwindows/Embedded security, such as graphical user interface Embedded the technical characteristics, and introduced the key application QT/Embedded security transplant a GUI application to Mini2440 experiment board process, in which Mini2440 experiment board, use S3C2440AL chip, and Linux2.6.13 kernel.

Keywords Linux Qt/Embedded QT S3C2440AL

目录

1. 前言 ........................................................................................................................... 1

1.1 研究背景......................................................................................................... 1 1.2 研究目的和意义............................................................................................. 2 2. 嵌入式系统和嵌入式Linux .................................................................................. 3

2.1 嵌入式系统概述............................................................................................. 3 2.2 嵌入式linux ................................................................................................... 4 2.3 嵌入式Linux的特点和优势 ....................................................................... 4 2.4嵌入式linux内核 ............................................................................................ 6

2.4.1 linux内核描述 .......................................................................... 6 2.4.2 linux内核系统体系结构 ........................................................... 7

3. 嵌入式Linux系统GUI设计分析 .......................................................................... 8

3.1 图形用户界面概述......................................................................................... 8 3.2 嵌入式系统的GUI简介 ................................................................................ 9 3.3 GUI的组成 ................................................................................................... 10 3.4 Qt/Embedded分析 ........................................................................................ 11

3.4.1 Qt/Embedded的工作模式 ....................................................... 11 3.4.2 Qt/Embedded中客户端/服务器通信方式 ................................ 12

4 QT技术 ................................................................................................................... 13

4.1 QT的优势 .................................................................................................... 13 4.2 QT图形用户界面 ........................................................................................ 13 4.3 QT Creator的特点以及优势 ....................................................................... 14 5 软硬件开发环境 ...................................................................................................... 15

5.1开发板Mini2440介绍 .................................................................................. 15

5.1.1 Mini2440特点......................................................................... 15

- III -

5.1.2 Mini2440开发板硬件资源主要特性 ....................................... 16 5.2芯片S3C2440L简介 ..................................................................................... 16 5.3虚拟机概述 .................................................................................................... 17 5.4 Linux内核和yaffs文件系统移植 ............................................................... 17 6 数码相框程序的移植过程 ...................................................................................... 20

6.1 移植QT ......................................................................................................... 20

6.1.1 QT源代码编译 ....................................................................... 20 6.1.2 交叉编译 ................................................................................. 20 6.2 程序开发环境................................................................................................ 21

6.2.1 制定程序框架 .......................................................................... 21 6.2.2编辑调试程序 .......................................................................... 21 6.3 各个功能的程序设计.................................................................................... 23

6.3.1 声明主要函数库 ..................................................................... 23 6.3.2 按钮的响应函数 ..................................................................... 24 6.4 设计成果........................................................................................................ 27 6.5 程序移植到ARM机上失败的原因分析 ..................................................... 28 7 结论 .......................................................................................................................... 29 参考文献 ..................................................................................................................... 30

- IV -

基于QT的数码相框设计与实现

1. 前言

21世纪,随着现代科学技术的飞速发展,人类历史即将进入一个崭新的时代──信息时代。其鲜明的时代特征是,支撑这个时代的诸如能源、交通、材料和信息等基础产业均将得到高度发展,并能充分满足社会发展及人民生活的多方面需求。信息科学的基础是微电子技术和光电子技术,它们同属于教育部本科专业目录中的一级学科“电子科学与技术”,而嵌入式就是其重点之一。现如今嵌入式系统得到了迅猛发展和普及,嵌入式技术的研究与发展成为当前的一个热点话题。

1.1 研究背景

嵌入式系统是先进的计算机技术、半导体技术、电子技术以及各种具体应用相结合的产物,是技术密集、资金密集、高度分散、不断创新的新型集成知识系统。近年来,随着计算机、微电子、通信及网络技术的发展,嵌入式系统已经应用于工业控制、家用电器等领域,并广泛用于移动计算机平台、信息家电、无线通信设备、电子商务平台及军事设备。嵌入式系统的飞速发展离不开嵌入式处理器和嵌入式操作系统的发展。在嵌入式处理器方面,ARM已取得了极大的成功,在创立至今短短的几十年的时间就占据了75%的市场份额,ARM芯片在嵌入式领域几乎随处可见,它目前是世界上销量最多的32位微处理器。32位的ARM处理器由于它的低成本、低功耗和高性能的特性,使其已成为32位嵌入式处理器的事实上的标准。嵌入式操作系统方面,开源系统Linux由于很多程序员的加入,使其不断的在发展壮大。嵌入式Linux具有可用于多种硬件平台、源码开放、内核高效稳定等优点,使其成为嵌入式领域主流的嵌入式操作系统。

- 1 -

基于QT的数码相框设计与实现

1.2 研究目的和意义

目前,在 Linux下应用软件开发领域急需一种容易学习、成本低、效率高的GUI应用程序开发方法,以解决Linux应用程序的易用性不高,应用范围相对狭窄的问题。而QT则是一个可以应用于Linux下的全面的C++程序开发框架,它能够开发高性能、跨平台、功能丰富的客户端和服务器端程序,同时QT还包含针对跨平台开发和国际化开发的类库和相应的开发工具,更引人注目的是,目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上的。

Qt/Embedded是一个专门为小型设备提供图形用户界面的应用框架和窗口系统,是高端嵌入式设备PDA及手机的主流开发工具。作为一项成熟的技术,KDE(Koll Desktop Environment,k桌面环境)桌面系统对于嵌入式窗口系统的设计有很大参考价值,Qt/Embedded给嵌入式窗口系统提供了很好的框架,提供了丰富的窗口小部件(Widgets),并且还支持窗口部件的定制,因此它可以为用户提供漂亮的图形界面。Qt/Embedded是KDE等项目使用的GUI支持库,所以有许多基于Qt/Embedded 的X Windows程序可以非常方便地移植到Qt/Embedded版本上,而本文所述设计主要是基于Qt/Embedded的应用上。

本章小结:嵌入式指的是把计算机系统作为一个信息处理部件嵌入到应用系统中而形成的系统,是适应具体应用系统在功能、可靠性、成本及功耗诸多方面更多的综合要求的专用计算机系统,它是计算机技术追求经济型、小型化、可靠性、高速度和智能型的必然结果。嵌入式 Linux是以Linux为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。

- 2 -

基于QT的数码相框设计与实现

2. 嵌入式系统和嵌入式Linux

嵌入式系统主要由嵌入式处理器、相关支撑硬件和嵌入式软件系统组成,它是集软硬件于一体的可独立工作的“器件”。嵌入式处理器目前趋向用32位甚至64位的高性能处理器,相关支撑硬件包括显示卡、存储介质(ROM和RAM等)、通讯设备等等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用闪存(Flash Memory)作为存储介质。本章主要介绍嵌入式系统的概念,及Linux操作系统的特点和优势,并就开发平台Linux2.4.31内核做主要说明和分析。

2.1 嵌入式系统概述

嵌入式系统是集软、硬件于一体的可独立工作的“器件”。嵌入式系统一般指非PC系统,它包括硬件和软件两部分,硬件设备包括处理器和外围设备,软件部分包括操作系统软件和应用程序。嵌入式处理器是嵌入式系统的核心部分,它与通用处理器最大的区别在于,嵌入式处理器大多工作在为特定用户群所专门设计的系统中,它将通用处理器中许多由板卡完成的任务集成到芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。如今,全世界嵌入式处理器已经超过1000多种,流行的体系结构有30多个系列,其中以ARM、PowerPC、MC 68000、MIPS等使用最为广泛。外围设备在嵌入式系统中主要用于完成存储、通信、调试、显示等辅助功能,如存储器及外设器件和I/O端口、图形控制器等。嵌入式操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。常用的嵌入式操作系统有如下几种:WinCE,Vxworks,Linux等。嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才具有其实用价值。

- 3 -

基于QT的数码相框设计与实现

2.2 嵌入式linux

嵌入式 Linux是以Linux为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。

2.3 嵌入式Linux的特点和优势

嵌入式Linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_Linux Hardhat Linux 等嵌入式Linux支持,实时性能稳定性好安全性好。

Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;其次,Linux的内核小、效率高,内核的更新 速度很快,linux是可以定制的,其系统内核最小只有约134KB。第三,Linux是免费的OS,在价格上极具竞争力。 Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统。到目前为止,它可以支持二三十种CPU。而且性能稳定,裁剪性很好,开发和使用都很容易。很多CPU包括家电业芯片,都开始做Linux的平台移植工作。移植的速度远远超过Java的开发环境。也就是说,如果今天用Linux环境开发产品,那么将来换CPU就不会遇到

- 4 -

基于QT的数码相框设计与实现

困扰。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Toker ring(令牌环网)、光纤甚至卫星的支持。所以Linux很适于做信息家电的开发。

现今Linux已经在嵌入式领域显示了强劲的发展势头。Linux是一个成熟而稳定的网络操作系统,Linux操作系统在短暂的时间内得到迅猛发展,是与其良好性能分不开的,其主要特性表现在如下几个方面:

(1)开放性:指系统遵循世界标准规范,特别是遵循开放系统互联(OSI国际标准)。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互联。

(2)多用户:指系统资源可以被不同用户各自拥有和使用,每个用户对自己的资源有特定的权限,互不影响。

(3)多任务:是现代计算机的主要的一个特点,是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程,平等地访问微处理器。

(4)良好的用户界面:Linux向用户提供了3种界面:传统操作界面、系统调用界面和图形用户界面。Linux的传统操作界面是基于文本的命令行界面,即Shell。

(5)设备独立性:是指操作系统把所有外部设备统一当作文件看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体形式。这种设备独立性简化增加新设备的工作。

(6)良好的移植性:经过内核开发者的努力,Linux2.4内核已经可以支持多种处理器平台,从大型计算机到有关体系结构的微型计算机Linux2.4内核能很好运行。

针对Linux内核的上述特点和在嵌入式开发领域对系统功能要求的不断提高,Linux系统逐渐成为嵌入式系统开发的首选操作系统。

- 5 -

基于QT的数码相框设计与实现

2.4嵌入式linux内核

Linux的低成本和开放性,使其广泛应用于嵌入式系统领域。本节着重介绍Linux2.6内核的新特性及其嵌入式应用中的优势。实时性和可靠性是嵌入式应用较为普遍的要求,尽管Linux2.6并不是一个真正的实对操作系统,但其改进的特性能够满足响应需求。Linux2.6已经在内核主体中加入了提高串断性能和调度响应时间的改进,其中有三个最显著的改进:采用可抢占内核、更加有效的调度算法以及同步性的提高。在嵌入式领域,Linux2.6提高了其实时性能,添加了新的体系结构和处理器类型,还改善了I/O子系统,等等,并且增添更多的多媒体应用功能。

2.4.1 linux内核描述

操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为“内核”,也可以称为“核心”。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。

Linux内核本身并不是操作系统,它是一个完整操作系统的组成部分。Red Hat、Debian和Fedora等Linux发行商都采用Linux内核,然后加入更多的工具、库和应用程序来构建一个完整的操作系统。Linux发行商一般会根据自己的需要对基本内核进行定制,在一些情况下,不同的Linux版本会在自己的内核中加入主内核中没有的特性和支持。

- 6 -

基于QT的数码相框设计与实现

2.4.2 linux内核系统体系结构

Linux 内核主要由5个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。

进程调度模块用来负责控制进程对CPU资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU,同时保证内核能及时地执行硬件操作。内存管理模块用于确保所有进程能够安全地共享机器主内存区,同时,内存管理模块还支持虚拟内存管理方式,使得Linux支持进程使用比实际内存空间更多的内存容量。并可以利用文件系统把暂时不用的内存数据块交换到外部存储设备上去,当需要时再交换回来。文件系统模块用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其他操作系统兼容的多种文件系统格式。进程间通信模块子系统用于支持多种进程间的信息交换方式。网络接口模块提供对多种网络通信标准的访问并支持许多网络硬件。

本章小结:嵌入式软件包括与硬件相关的底层软件、操作系统、图形界面、通讯协议、数据库系统、标准化浏览器和应用软件等。总体看来,嵌入式系统具有便利灵活、性能价格比高、嵌入性强等特点,而嵌入式Linux由于它的开源性、内核的健壮性和稳定性、可裁减性、成为了嵌入式操作系统的新宠。

- 7 -

基于QT的数码相框设计与实现

3. 嵌入式Linux系统GUI设计分析

嵌入式系统的图形用户界面GUI是嵌入式系统与人与计算机之间传递、交换信息的媒介和对话接口,是计算机的重要组成部分,用户界面的发展经历了命令语言界面、菜单界面、图形用户界面和直接操作界面等过程。

3.1 图形用户界面概述

所谓GUI(Graphics User Interface)就是图形用户界面,是指计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。

一个图形用户界面系统通常由三个基本层次组成,即显示模型、窗口模型和用户模型。用户模型包含了显示和交互的主要特征。图3-1给出了图形用户界面系统的结构。

桌面管理系统 用户模型 窗口模型 显示模型 操作系统 硬件平台 图3-1 图形用户界面系统的结构

当前嵌入式Linux系统迫切需要轻量级的GUI,幸运的是,不少厂家和开放源码组织已经提供了这样的GUI,如Qt/Embedded,Microwindows,MiniGUI等。尽管已具备了基本的轻量级GUI系统,但由于Flash磁盘空间、内存资源和功耗的限制,嵌入式Linux系统上的GUI应用软件设计很大程序上不同于桌面系统应用软件的开发。比如,应用程序的用户界面就需要精心定制,来方便用户在较小尺寸的屏幕上输入输出;又如,嵌入式系统上的应用程序一般不允许崩溃,所以必须采取安全有效的内存管理策略保证程序的可靠性。

- 8 -

基于QT的数码相框设计与实现

3.2 嵌入式系统的GUI简介

嵌入式GUI就是在嵌入式系统中为特定的硬件设备或环境而设计的图形用户界面系统。所以嵌入式GUI不但要有GUI的特征,在实际应用中,嵌入式系统对它来说还有如下的基本要求:占用资源少,高性能,高可靠性,可配置

下面,我们将简要介绍一种常见的嵌入式系统的GUI——QT/Embedded: Qt是Trolltech 公司的一个产品,是一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。 自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础,KDE是所有主要的Linux发行版的一个标准组件。

Qt/Embedded 是 Trolltech 公司的另一个产品,虽然走Open Source开发路线,采用GPL授权,但商业用的要付费。Qt/Embedded是Qt的嵌入式Linux端口,是完整的自包含C++GUI和基于Linux的嵌入式平台开发工具。大范围的Qt/Embedded API可用于多种开发项目。Qt/Embedded可以开发市场上多种类型的产品和设备,从消费电器(移动电话、联网板和set top盒)到工业控制设备(如医学成像设备、移动信息系统等)。这套环境提供的API和Qt/Windows 与Qt/X11相同,但不需要使用到X11,取而代之的提供从硬件接口、绘图程序库和完整的GUI工具。Qt/Embedded 对存储内存的需求约在800kB到3MB(Intel 下x86)。其另一个特点就是跨平台,用Qt API开发出来的应用程序,可以在不同的操作系统和视窗系统上执行。

- 9 -

基于QT的数码相框设计与实现

3.3 GUI的组成

桌面:在启动时显示,也是界面中最底层,有时也指代包括窗口、文件浏览器在内的“桌面环境”。

视窗:应用程序为使用数据而在图形用户界面中设置的基本单元。应用程序和数据在窗口内实现一体化。

单一文件界面:在窗口中,一个数据在一个窗口内完成的方式。在这种情况下,数据和显示窗口的数量是一样的。若要在其他应用程序的窗口使用数据,将相应生成新的窗口。因此窗口数量多,管理复杂。

多文件界面:在一个窗口之内进行多个数据管理的方式。这种情况下,窗口的管理简单化,但是操作变为双重管理。

标签:多文件界面的数据管理方式中使用的一种界面,将数据的标题在窗口中并排,通过选择标签标题显示必要的数据,这样使得接入数据方式变得更为便捷。

上述中,多文件界面主要是微软视窗系统采用。而在其他环境中,通常多是单文件界面,所以无所谓单一/多文件界面的称呼问题。

菜单:将系统可以执行的命令以阶层的方式显示出来的一个界面。一般置于画面的最上方或者最下方,应用程序能使用的所有命令几乎全部都能放入。

即时菜单(又称功能表):与应用程序准备好的层次菜单不同,在菜单栏以外的地方,通过鼠标的第二按钮调出的菜单称为“即时菜单”。

图标:显示在管理数据的应用程序中的数据,或者显示应用程序本身。 按钮:菜单中,利用程度高的命令用图形表示出来,配置在应用程序中,成为按钮。

- 10 -

基于QT的数码相框设计与实现

3.4 Qt/Embedded分析

Qt/Embedded是Troll tech公司开发的面向嵌入式系统的Qt版本,Qt是KDE等项目使用的GUI支持库,许多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded上。Qt/Embedded是Server/Client(客户端/服务器)结构,在底层摒弃了X lib,仅采用frame buffer作为底层图形接口,它是为高端嵌入式图形领域的应用而设计的。

3.4.1 Qt/Embedded的工作模式

Qt/Embedded的窗口系统具有自己的一种客户端/服务器体系结构,其窗口系统体系结构如下

图3- 所示,在一个典型的Qt/Embedded窗口系统中一般包括一个或多个客户端进程,一个服务器进程,然而Qt/Embedded的客户/服务器模型与一般泛指的客户/服务器模型概念又不完全一样,在Qt/Embedded中,客户端和服务器都是Qt/Embedded应用程序,并不是位于不同机器上的应用程序,服务器和客户端不是独立分别运行在不同的机器上的,而和客户端应用程序在同一机器上运行。

提供GUI服务 客户进程 服务器进程

Qt/Embedded库 键盘设备 鼠标设备 显示存储设备 - 11 -

基于QT的数码相框设计与实现

图3- 2 Qt/Embedded窗口系统体系结构

3.4.2 Qt/Embedded中客户端/服务器通信方式

在Qt/Embedded中,客户端进程可有多个,但服务器进程只能有一个。服务器是以-qws作为参数运行的应用程序,它除了具有一般Qt/Embedded应用程序的客户端功能外,还具有服务器的功能。在这种情况下服务器与客户端在同一个进程中,也就是说客户端与服务器的通信是发生在同一进程空间中。在这种情况下,其实只需要通过两个队列结构就可以完成消息的传递。当服务器有命令或事件发送给客户端时,服务器就把此命令或事件放到与服务器对应的消息队列(outcoming)中,直到客户端从outcoming取出此命令或者事件。而客户端也是如此,当客户端有命令或事件发送给服务器时,则把此命令或事件放到与客户端对应的消息队列(incoming)中,直到服务器从incoming取出此命令或者事件。当然,这只是一个大致的通信过程。

有上述分析可知,Qt/Embedded的Server/Client通信可以分为两种情况,一种是单进程情况,即服务器端与客户端在同一进程中。另一种是多进程情况,即服务器端和客户端在不同的进程中。

本章小结:大多数情况下系统中总则存在多个客户端,它们都是没有用参数qws启动的应用程序时。这些客户端有一个特点,就是它们与服务器不处于同一进程中。多个客户端和一个服务器通过函数QWSClient::sendEvent()向对方发送事件和命令,然后服务器将来自鼠标及键盘等硬件输入的数据抽象通过socket以事件的形式发送给客户端。在发送的过程中,服务器还要把对窗口的全局管理也以事件的形式发送给客户端。在发送的同时,服务器还通过socket等待接收来自客户端发送过来的命令或事件,然后再进行相应的操作。客户端本身不具有处理的能力,需处理的窗口的全局管理及键盘鼠标命令数据同样用socket以事件的形式发送给服务器,交给服务器处理。同服务器一样,

- 12 -

基于QT的数码相框设计与实现

客户端在发送的同时还要通过socket接收来自服务器的事件,然后发给相应的客户端进行窗口处理。

4 QT技术

Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。

4.1 QT的优势

面向对象 :Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。

丰富的 API:Qt包括多达 250 个以上的 C++ 类,还提供基于模板的 collections, serialization, file, I/Odevice, directory management, date/time 类。甚至还包括正则表达式的处理 功能。

支持 2D/3D 图形渲染,支持 OpenGL ,大量的开发文档 ,XML 支持 ,Webkit 引擎的集成,可以实现本地界面与Web内容的无缝集成

但是真正使得 Qt 在自由软件界的众多 Widgets (如 Lesstif,Gtk,EZWGL,Xforms,fltk 等等)中脱颖而出的还是基于 Qt 的重量级软件 KDE 。

4.2 QT图形用户界面

Qt的图形用户界面的基础是QWidget。Qt中所有类型的GUI组件如按钮、标签、工具栏等都派生自QWidget,而QWidget本身则为QObject的子类。

- 13 -

基于QT的数码相框设计与实现

Widget负责接收鼠标,键盘和来自窗口系统的其他事件,并描绘了自身显示在屏幕上。

QWidget不是一个抽象类。并且可以被放置在一个已存在的用户界面中;若是Widget没有指定父Widget,当它显示时就是一个独立的视窗、或是一个顶层widget。QWidget显示能力包含了透明化及Double-Buffering。Qt提供一种托管机制,当Widget于创建时指定父对象,就可把自己的生命周期交给上层对象管理,当上层对象被释放时,自己也被释放。确保对象不再使用时都会被删除。

4.3 QT Creator的特点以及优势

Qt Creator是跨平台的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。根据官方描述,Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务。

Qt Creator 主要是为了帮助新 Qt 用户更快速入门并运行项目,还可提高有经验的 Qt 开发人员的工作效率。 使用强大的 C++ 代码编辑器可快速编写代码 ,语法标识和代码完成功能输入时进行静态代码检验以及提示样式上下文相关的帮助代码折叠括号匹配和括号选择模式高级编辑功能。

为 Qt跨平台开发人员的需求而量身定制 ,集成了特定于 Qt 的功能,如信号与槽 (Signals & Slots)图示调试器, 对 Qt 类结构可一目了然集成了 Qt Designer 可视化布局和格式构建器只需单击一下就可生成和运行 Qt 项目。

本章小结:Qt是流行的Linux桌面环境KDE 的基础。 基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但Qt具有优良的跨平台特性、面向对象 、丰富的API、大量的开发文档等优点。

- 14 -

基于QT的数码相框设计与实现

5 软硬件开发环境

本章主要介绍基于S3C2440的图形界面设计所使用到的软件和硬件平台,包括Mini2440开发板、处理器S3C2440和Qt Creator设计软件,以及Linux内核和文件系统的移植。

5.1开发板Mini2440介绍

Mini2440是一款真正低价实用的ARM9开发板,是目前国内性价比最高的一款学习板;它采用SamsungS3C2440为微处理器,并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行是的稳定性。Mini2440的PCB采用沉金工艺的四层板设计,专业等长布线,保证关键信号线的信号完整性,生产采用机器贴片,批量生产;出厂时都经过严格的质量控制。

5.1.1 Mini2440特点

(1)第一款被Linux社区广泛支持的国产2440开发板 (2)第一款在linux下支持万能USB摄像头的2440开发板 (3)第一款统一采用支持EABI标准的交叉编译器的开发板 (4)第一款提供齐全BSP的开发板,并全面配有图形界面实用程序 (5)第一款支持NET 3.5和腾讯QQ的2440开发板

(6)第一款可以让用户无需编程,即可自由简单定制windowsCE开机画面的开发板

- 15 -

基于QT的数码相框设计与实现

5.1.2 Mini2440开发板硬件资源主要特性

CPU处理器:SamsungS3C2440A,主频400MHz,最高533Mhz

SDRAM内存:在板64M SDRAM,32bit数据总线,SDRAM时钟频率高达100NHz

FLASH存储:在板256M/1GB Nand Flash,掉电非易失 在板2M Nor Flash,掉电非易失,已经安装BIOS

LCD显示:板上的集成4线电阻式触摸屏接口,可以直接连接四线电阻触摸屏 支持黑白,4级灰度,16级灰度,256色,4096色STN液晶屏,尺寸从3.5寸到12.1寸,屏幕分辨率可以达到1024x768像素

5.2芯片S3C2440L简介

S3C2440AL是16/32位精简指令集微处理器,是为应用于小型掌上设备和高性价比、低功耗、高性能的嵌入式系统应用而提供的微控制。S3C2440使用了ARM920T内核,采用了0.18um技术标准,它功耗低,非常适合需要控制成本和功耗应用的场合。

S3C2440具有各种特性,包括:NAND Flash启动引导、Cache存储器、时钟电源管理、中断控制器、具有脉冲带宽调制功能的定时器、RTC实时时钟、通用I/O端口、DMA控制器、LCD控制器STN LCD显示特性、TFT彩色显示屏、UART、A/D转换和触摸屏接口等等。S3C2440AL的资源包括:1个LCD控制器、SDRAM控制器、NAND FLASH控制器、3路UART通道、4路DMA通道、4个具有PWM功能的计时器和一个内部时钟、8通道的10位ADC、8通道10位AD控制器、IIS-BUS接口、IIC-BUS接口、2个USB主机接口、1个USB设备接口、SD接口、MMC卡接口、看门狗计数器、117位通用I/O口和24位外部中断源、摄像头接口和触摸屏接口。

- 16 -

基于QT的数码相框设计与实现

(5)原图按钮

void Widget::on_nromal_clicked()//原图片大小 { pix.load(imageList[i]); label->setPixmap(pix); }

(6)恢复按钮

void Widget::on_recover_clicked()//从缩小或放大状态恢复

{pix.load(imageList[i]);//这里设置大小设置为固定值,是因为前面的label的大小已经改变

pix = pix.scaled(315,205,Qt::IgnoreAspectRatio);//设置图片的大小和label的大小相同

label->setPixmap(pix); }

(7)旋转按钮

void Widget::on_zhuan_clicked()//旋转 {

timer->stop();

matrix.rotate(90);//旋转90°

pix = pix.transformed(matrix,Qt::FastTransformation);

pix = pix.scaled(label->width(),label->height(),Qt::IgnoreAspectRatio);//设置图片大小为label的大小,否则就会出现滑动条

label->setPixmap(pix); }

- 27 -

基于QT的数码相框设计与实现

6.4 设计成果

图6-1设计成品

如图所示,运行该程序会出现该界面。初始状态下,只有打开按钮显示功能,其它按钮不可用。当你打开多张图片的时候,所有按钮都可用。点击“播放”按钮,可依次进行图片 的播放。图6-1显示的画面是一张放大的图片,当你点击“恢复”按钮时,图片会立即显示和窗口一样大小。由于对Minni2440开发板,Linux操作系统和Qt Creator软件等并不是特别熟悉,遇到了许多困难,期间花了较多时间来熟悉操作和编程,最终在老师的帮助下顺利完成了该设计,但由于本人在知识面、经验以及能力等方面的局限性和不足之处,本次设计还有待改进。

- 28 -

基于QT的数码相框设计与实现

6.5 程序移植到ARM机上失败的原因分析

本次课程设计没有移植到ARM机上的原因主要有以下几点:

(1)编译arm平台的qt程序应该是arm-linux-g++才对,所以qmake有问题,而arm平台的编译器qmake是在mkspec/qws/arm-linux-g++下配置的,而本次安装软件中缺少该配置,所以应重新下载并安装qt-embedded-free-3.3.7。 (2)本次实验所使用的实验箱中,缺少QT编译的环境,应该重新烧录系统,把QT环境完整的进行安装。

(3)本次实验中可能由于本人的失误,把环境变量配置错误,使系统找不到编译器arm-linux-g++,正确做法应该重新设置环境变量,具体命令为#sudo gedit /etc/environment,再添加路径:/usr/arm/3.3.7/bin,并使其生效#source /etc/environment

(4)本次所使用的QT creator是在官网上下的简体版的,只有68M,里面的内容不完整,导致我们编译的不太正确,建议下完整版的422M。

(5)Qtcreator配置中编译链没有设置正确,应加入GCCE编译链,目标位置就是linux-none-arm-guneabi-g++所在位置。

本章小结:本章主要详细介绍了设计过程,我们主要讲解了实验中所需要的软件,以及开发环境的搭建,开发环境的搭建是极其重要的,如果环境搭载不成功,则程序会提示许许多多的错误。另外,我们还对主要按钮的代码进行了分析,还为大家分析了移植ARM平台失败的原因。本次课程设计是一次软硬结合的设计,二者不可或缺,相辅相成。从这个地方我们会发现嵌入式开发的魅力,我们也对它的前景充满了希望。

- 29 -

基于QT的数码相框设计与实现

7 结论

本次设计是在Linux平台上,基于QT编译数码相框。在设计的过程中,利用虚拟机创建一个系统,然后在Fedora10操作系统中搭建开发环境。熟悉嵌入式Linux系统的特点和结构,利用Mini2440开发板,进行软件程序的编写及烧写,最后实现简单的数码相框功能。数码相框要求简洁实用,界面美观,力求给人以精神上的享受。本设计围绕这一目标,突出界面的美化,如幻灯片的切换等。

该数码相框功能简单,大体框架已具备。本设计基本实现了数码框的功能,但其设计的硬件极其简单,由于成本,时间,技术等客观条件,无法实现较复杂的功能。本设计对嵌入式系统中很重要的一个部分,驱动程序的开发并未全部涉及。驱动程序开发是嵌入式系统中一个非常重要的环节,要开发一个数码相框系统,需要编写大连设备的驱动程序代码。而且驱动程序也在不断的完善和发展中,最新型设备文件系统udev正在逐步取代老式的devfs。在将来条件允许的情况下,可以在此基础上进行很多修改和升级。

- 30 -

参考文献

[1]魏永明. 实时嵌入式Linux系统上GUI的发展与展望. 微电脑世界,2000年,47期

[2]霍妍,凡荣. 基于Linux嵌入式系统的研究与实现.计算机系统应用,2004年,08期

[3]王学龙. 嵌入式Linux系统设计与应用. 清华大学出版社,2001年8月 [4]李宋琛. Linux面向对象窗口高级编程. 北京:科学出版社,2001年6月 [5]陈莉君. Linux操作系统内核分析. 北京:人民邮电出版社,2001年8月 [6]赵烔. Linux内核0.11完全注释. www.oldlinux.org,2004年5月21日 [7]Daniel Solin著,袁鹏飞译. 24小时学通Qt编程. 北京:人民邮电出版社,2000年11月

[8]王洪涛. Linux2.6内核标准教程. 北京:人民邮电出版社,2008年 [9]赵国安,郁斌,薛琳强. 基于Linux嵌入式原理与应用开发. 北京:清华大学出版社,2008年10月

[10]张娟,雪兰. 嵌入式Linux的GUI应用程序的实现. 计算机应用,2003年,04期

[11]北京亚嵌教育研究中心组编. 嵌入式GUI开发设计——基于MiniGUI. 北京:电子工业出版社,2009年5月

[12]陈沨,毛洋林,潘志浩. 基于嵌入式Linux的图形界面显示系统的设计. 微计算机信息, 2004年,01期

[13]基于SKY2440/TQ2440的Qt/Embedded应用程序开发完全手册(上)之24小时学会Qt/Embedded开发

[14]Jasmin Blanchette,Mark Summerfield. C++ GUI Programming with Qt3. Publisher:Prentice Hall PTR,January 15 2004

- 31 -

本文来源:https://www.bwwdw.com/article/c7i6.html

Top