嵌入式设计报告基于ARM6410的Qtopia 443的移植.docx
- 文档编号:10746841
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:21
- 大小:290.26KB
嵌入式设计报告基于ARM6410的Qtopia 443的移植.docx
《嵌入式设计报告基于ARM6410的Qtopia 443的移植.docx》由会员分享,可在线阅读,更多相关《嵌入式设计报告基于ARM6410的Qtopia 443的移植.docx(21页珍藏版)》请在冰点文库上搜索。
嵌入式设计报告基于ARM6410的Qtopia443的移植
摘要
图形用户界面的广泛应用是当今计算机技术的重大成就之一,它极大地方便了非专业用户的使用。
在嵌入式系统中,GUI(图形用户界面)是嵌入式实时操作系统的重要组成部分,作为人机互交技术的重要内容,以其丰富的图形图像信息和直观的表达方式与用户互交,被越来越多的嵌入式系统所采用,现在已经成为当今嵌入式领域的发展焦点。
虽然市场上现在已经有了众多的优秀的GUI应用软件,但随着近年来计算机技术的迅速发展,当新硬件、新技术出现时,计算机的体系结构、指令系统和操作系统都可能发生相应的改变,这势必会导致一部分应用软件在新环境下无法正常运行。
如果舍弃原有软件而重新开发,将会耗费大量的人力和资金,而且浪费了许多成熟的软件成果。
而Qt在源代码级上实现了跨平台特性,极大的支持了跨平台通用软件的开发。
Qt可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得相同的运行效果,称为“一次编写,随处编译”,利用这种方法充分实现了程序的跨平台运行。
这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优势,充分利用每个平台自身的特点;并且即可以在新环境下实现原有软件的功能和特点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提高软件的质量,延长软件生命期。
因此,基于Qt的嵌入式应用程序开发是一个非常有意义的课题,完成了嵌入式图形用户界面开发良好的人机交互界面是嵌入式系统设计的一个关键技术,具有一定的实用意义和价值。
关键词:
嵌入式QT图形用户界面人机交互
目录
摘要·························································II
1.绪论································································1
1.1课题研究背景和意义·····································1
1.2嵌入式技术发展现状·····································2
1.3嵌入式的发展趋势·····································2
2.Qt开发工具简介·············································4
2.1Linux的简介···········································4
2.2QT的简介·········································5
2.3Qt编程机制简介··································5
2.4常用的两种用户图形界面的简介·····························8
3.处理器的概述·················································9
4.Qtopia4.4.3的移植设计·········································10
4.1Tslib1.4的编译········································10
4.2Qtopia4.4.3的编译········································12
4.3Qtopia4.4.3的使用········································13
4.4运行Qtopia4.4.3········································14
4.5Qtopia4.4.3的演示效果········································15
5总结·················································16
6参考文献·············································17
附录一网络文件系统的挂载··································19
1.绪论
1.1课题研究背景和意义
随着嵌入式产品的发展,往往要求嵌入式操作系统有网络和图形的功能。
利用源代码开放的Linux搭建的嵌入式操作系统,由于强大的网络功能和低成本,近来得到了越来越多的应用。
其能够提供全功能的桌面计算,定制非常方便并且支持大多数嵌入式系统上使用的芯片,包括StrongARM,MIPS和PowerPC等。
在嵌入式Linux操作系统上使用一个功能完备的轻量级、高性能、高可靠、可配置的GUI系统成为可行的解决方案。
而Qt在源代码级上实现了跨平台特性,极大的支持了跨平台通用软件的开发。
Qt可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得相同的运行效果,称为“一次编写,随处编译”,利用这种方法充分实现了程序的跨平台运行。
这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优势,充分利用每个平台自身的特点;并且即可以在新环境下实现原有软件的功能和特点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提高软件的质量,延长软件生命期。
嵌入式设备之所以为亿万用户乐于接受,重要因素之一是它们与使用者之间的亲和力,自然的人机交互界面。
人们与信息终端交互要求以GUI屏幕为中心的多媒体界面。
以信息家电为代表的互联网时代嵌入式产品,不仅为嵌入式市场展现了美好前景,注入了新的生命;同时也对嵌入式系统技术提出新的挑战。
这主要包括:
支持日趋增长的功能密度、灵活的网络联接、轻便的移动应用和多媒体的信息处理。
当然这些基础中必不可少的是----友善的人机互交的图形用户界面。
1.2嵌入式技术发展现状
全过程自动化产品制造、大范围电子商务活动、高度协同科学实验以及现代化家庭起居,为嵌入式产品造就了崭新而巨大的商机。
最有量产效益和时代特征的嵌入式产品应数因特网上的信息家电(InternetAppliances),如Web可视电话、Web游戏机、WebPDA(俗称电子商务、商务通)、WAP电话手机、以及多媒体产品,如STB(电视机顶盒)、DVD播放机、电子阅读机。
除了沟通信息高速公路的交换机、路由器和Modem,构建CIMS所需的DCS和机器人以及规模较大的家用汽车电子系统。
以信息家电为代表的互联网时代嵌入式产品,不仅为嵌入式市场展现了美好前景,注入了新的生命;同时也对嵌入式系统技术,特别是软件技术提出新的挑战。
这主要包括:
支持日趋增长的功能密度、灵活的网络联接、轻便的移动应用和多媒体的信息处理、友善的人机互交的图形用户界面,此外,当然还需对付更加激烈的市场竞争。
1.3嵌入式的发展趋势
信息时代,数字时代使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景,同时也对嵌入式生产厂商提出了新的挑战,从中我们可以看出未来嵌入式系统的几大发展趋势:
1.嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。
目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。
比如三星在推广芯片的同时还提供开发板和版及支持包(BSP),而WindowCE在主推系统时也提供EmbeddedVC++作为开工具,还有Vxworks的Tonado开发环境,DeltaOS的Limda编译环境等等都是这一趋势的典型体现。
当然,这也是市场竞争的结果。
2.网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机等功能不再单一,结构更加复杂。
这就要求芯片设计厂商在芯片上集成更多的功能,为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力,同时增加功能接口,如USB,扩展总线类型,如CANBUS,加强对多媒体、图形等的处理,逐步实施片上系统(SOC)的概念。
软件方面采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、保障软件质量和缩短开发周期。
3.网络互联成为必然趋势。
未来的嵌入式设备为了适应网络发展的要求,必然要求硬件上提供各种网络通信接口。
传统的单片机对于网络支持不足,而新一代的嵌入式处理器已经开始内嵌网络接口,除了支持TCP/IP协议,还有的支持IEEE1394、USB、CAN、Bluetooth或IrDA通信接口中的一种或者几种,同时也需要提供相应的通信组网协议软件和物理层驱动软件。
软件方面系统系统内核支持网络模块,甚至可以在设备上嵌入Web浏览器,真正实现随时随地用各种设备上网。
4.精简系统内核、算法,降低功耗和软硬件成本。
未来的嵌入式产品是软硬件紧密结合的设备,为了减低功耗和成本,需要设计者尽量精简系统内核,只保留和系统功能紧密相关的软硬件,利用最低的资源实现最适当的功能,这就要求设计者选用最佳的编程模型和不断改进算法,优化编译器性能。
5.提供友好的多媒体人机界面
嵌入式设备能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面。
图像界面,灵活的控制方式,使得人们感觉嵌入式设备就象是一个熟悉的老朋友。
这方面的要求使得嵌入式软件设计者要在图形界面,多媒体技术上痛下苦功。
手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像都会使使用者获得自由的感受。
目前一些先进的PDA在显示屏幕上已实现汉字写入、短消息语音发布,但一般的嵌入式设备距离这个要求还有很长的路要走。
2.Qt开发工具简介
2.1Linux的简介
Linux是个和Unix相似、以Unix核心为基础、完全内存保护、多任务多进程的操作系统。
支持广发的计算机硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC等现有的大部分芯片。
程式源码全部公开,任何人可以修改并在GNU通用公共许可证(GNUGeneralPublicLicense)下发行,这样开发人员可以对操作系统进行定制,再也不必担心像MSwindows操作系统中"后门"的威胁。
同时由于有GPL的控制,大家开发的东西大都相互兼容,不会走向分裂之路。
Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。
Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。
Linux还提供了强大的网络功能,有多种可选择窗口管理器(Xwindows)。
其强大的语言编译器gcc、g++等也可以很容易得到。
不但成熟完善、而且使用方便,为嵌入操作系统提供了一个极有吸引力的选择。
Linux已经被移植到多种硬件平台,这对受开销、时间限制的研究与开发项目是很有吸引力的。
原型可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程。
Linux还有以下优点:
(1)Linux可以随意地配置,不需要任何的许可证或商家的合作关系。
(2)它是免费的,源代码可以得到。
(3)它本身内置网络支持。
(4)Linux的高度模块化使添加部件非常容易。
(5)linux在嵌入式系统中的广泛应用。
嵌入式产品中选择什么样的操作系统极为重要,嵌入式Linux由于其开源特性、实时性好、可移植、内置网络支持等优点在嵌入式领域成为主力军。
如今,业界已经达成共识:
即嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。
2.2QT的简介
Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司开发,目前包括Qt/X11、基于Framebuffer的Qt/Embedded、快速开发工具QtDesigner以及国际化工具QtLinguist等。
人们所熟知的Linux下面的KDE环境就是基于Qt开发而成的。
Qt支持Unix和Linux系统以及Windows系统。
Qt的主要特点有:
面向对象,很容易扩展,并且允许真正的组件编程;Qt对各个模块进行了良好的封装,使各模块可重用性较好;优良的跨平台特性,使用Qt类编写的程序可以实现“一次编码,到处编译”,极大的降低了跨平台开发的难度(丁丁等,2004);构件支持,对于对象间通信,Qt没有采用函数回调的方法,而是采用了一种全新并且可选的被称为“信号与槽”的对象间通信机制,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效。
Qt的这些特点使它非常适合于真正的构件编程,同时使各个组件之间的协同工作变得十分简单,并且Qt是直接基于Xlib的,不依赖Motif工具包,所以它的执行效率比一般的基于平台的代码的执行效率要高。
2.3Qt编程机制简介
(1)Qt系统的信号与槽机制简介
信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分。
在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件。
更一般地,我们希望任何一类的对象可以和其它对象进行通讯。
较老的工具包使用一种被称作回调的通讯方式来实现同一目的。
回调是指一个函数的指针,所以如果你希望一个处理函数通知你一些事件,你可以把另一个函数(回调)的指针传递给处理函数。
处理函数在适当的时候调用回调。
回调有两个主要缺点。
首先他们不是类型安全的。
我们从来都不能确定处理函数使用了正确的参数来调用回调。
因此容易造成进程崩溃,另外一个问题是,回调这种方式紧紧的绑定了图形用户接口的功能元素,因而很难把开发进行独立的分类。
Qt的信号与槽机制是不同的。
Qt的信号与槽均以函数形式出现,Qt的窗口部件有很多预定义的信号,但我们也可以通过继承来加入我们自己的信号。
槽就是一个可以被调用处理特定信号的函数。
Qt的窗口部件有很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。
我们可以用connect()函数对需要的信号和槽进行连接。
当对象的内部状态发生改变,信号就被发射。
从某种意义上讲,它们也许对外面的世界感兴趣。
这就是所有的对象通讯时所做的一切。
它不知道也不注意无论有没有东西接收它所发射的信号。
当一个信号被发射,它所连接的槽会被立即执行,就像一个普通函数调用一样(见图1)。
信号/槽机制完全不依赖于任何一种图形用户界面的事件回路。
当所有的槽都返回后发射的信号也将返回。
信号和槽的机制是类型安全的:
一个信号的签名必须与它的接收槽的签名相匹配。
(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。
)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。
它以警告的方式报告类型错误,而不会使系统产生崩溃。
信号和槽是宽松地联系在一起的:
一个发射信号的类不用知道也不用注意哪个槽要接收这个信号。
Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。
信号和槽可以使用任何数量、任何类型的参数。
它们是完全类型安全的:
不会再有回调核心转储(coredump)。
你可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和你所期望的许多槽相连。
把一个信号和另一个信号直接相连也是可以的。
(这时,只要第一个信号被发射时,第二个信号立刻就被发射。
)
总体来看,信号和槽构成了一个强有力的组件编程机制。
如果一个类要使用信号与槽机制,它就必须是从QObject或QObject的子类继承,而且类的定义必须加上Q_OBJECT宏。
signals、slots和emit是Qt特有
的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用标准的C++编译器。
槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个publicslots:
包含了任何信号都可以相连的槽。
一个protectedslots:
包含了只有这个类和它的子类的信号才能连接的槽。
这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。
一个privateslots:
包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。
图1信号和槽的连接原理图
2.4常用的两种用户图形界面的简介
MiniGUI
MiniGUI是Linux控制台上运行的,基于SVGALib和LinuxThread6库的多窗口图形用户界面支持系统。
MiniGUI采用了类Win32的API接口,实现了简化的类Windows98风格的图形用户界面。
MiniGUI也是一个窗口系统,他的主要组成元素是窗口,在这个基础上MiniGUI中的窗口可以基本分四类,分别为主窗口、对话框、控件和主窗口中的窗片。
MiniGUI中的主窗口和Windows应用程序的主窗口概念类似,MiniGUI中的每个主窗口对应于一个单独的线程,通过函数调用可建立主窗口以及对应的线程。
每个线程有一个消息队列,主窗口从这一消息队列中获取消息并由窗口过程(回调函数)进行处理。
MiniGUI的目标是保持现有小巧的特点,在Linux控制台上提供一个小的窗口系统支持,"小"是MiniGUI的特色。
同时MiniGUI又将尽力与微软的MSWindowsAPI保持兼容。
这么定位是希望MiniGUI可以在未来以Linux为基础的应用平台上提供一个简单可行的GUI支持系统,让MiniGUI可以应用在WindowsCE可以应用的任何场合。
QT/Embedded
Qt是Trolltech公司的一个产品,是一个多平台的C++图形用户界面应用程序框架。
它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。
Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。
自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。
Qt也是流行的Linux桌面环境KDE的基础,KDE是所有主要的Linux发行版的一个标准组件。
Qt/Embedded是Trolltech公司的另一个产品,虽然走OpenSource开发路线,采用GPL授权,但商业用的要付费。
Qt/Embedded是Qt的嵌入式Linux端口,是完整的自包含C++GUI和基于Linux的嵌入式平台开发工具。
大范围的Qt/EmbeddedAPI可用于多种开发项目。
Qt/Embedded可以开发市场上多种类型的产品和设备,从消费电器(移动电话、联网板和settop盒)到工业控制设备(如医学成像设备、移动信息系统等)。
这套环境提供的API和Qt/Windows与Qt/X11相同,但不需要使用到X11,取而代之的提供从硬件接口、绘图程序库和完整的GUI工具。
Qt/Embedded对存储内存的需求约在800kB到3MB(Intel下x86)。
其另一个特点就是跨平台,用QtAPI开发出来的应用程序,可以在不同的操作系统和视窗系统上执
3.处理器的概述
S3C6410系列处理器展示了一种以32位处理器的成本,提供64位处理器性能的解决方案。
S3C6410处理中,内核和Cache,及协处理器之间的数据通路是64位的。
这使处理器可以每周期读入两条指令或存放两个连续的数据,以大大提高数据访问和处理的速度。
经过评测,这已经和64位处理器的性能相差无几。
S3C6410系列微处理器是ARM公司近年推出的新一代RISC处理器,它是ARM新指令架构——ARMv6的第一代设计实现。
ARMv6架构是根据下一代的消费类电子、无线设备、网络应用和汽车电子产品等需求而制定的。
S3C6410的媒体处理能力和低功耗特点,特别适用于无线和消费类电子产品;其高数据吞吐量和高性能的结合非常适合网络处理应用;另外,也在实时性能和浮点处理等方面S3C6410可以满足汽车电子应用的需求。
可以预言,基于AMRv6体系结构的S3C6410系列处理器将在上述领域发挥巨大的作用。
S3C6410处理器是为了有效的提供高性能处理能力而设计的。
它的流水线和以前的ARM内核不同,它由8级流水线组成,比以前的ARM内核提高了至少40%的吞吐量。
8级流水线可以使8条指令同时被执行。
在这里需要强调的是,ARM并不是不能设计出运行在更高频率的处理器,而是,在处理器能提供超高性能的同时,还要保证功耗、面积的有效性。
优秀的流水线设计是这些功能的重要保证。
对于各种嵌入式的应用,毫无节制的提供高性能处理器是无用的。
同成本控制类似,功耗的控制也是一个重要因素。
S3C6410系列处理器展示了在性能上的巨大提升,首先推出350M~500MHz时钟频率的内核,在未来将上升到1GHz时钟频率ARM11处理器在提供高性能的同时,也允许在性能和功耗间做权衡以满足某些特殊应用。
通过动态调整时钟频率和供应电压,开发者完全可以控制这两者的平衡。
4Qtopia4.4.3的移植设计
4.1Tslib1.4的编译
PC环境:
Ubuntu9.10
开发板:
OK6410
交叉编译器:
arm-linux-gcc-4.3.2
(1)tslib的编译和配置
编译和运行qt-extended-4.4.3(Qtopia4),需要tslib库,该库是触摸屏校准时需要的库文件,如对触摸屏的数据进行过滤、去抖动等,QT的库会调用tslib的库文件
编译方法
步骤1.安装autoconf、automake、libtool包
在Ubuntu命令行中分别执行以下三个升级命令。
#sudoapt-getinstallautoconf
#sudoapt-getinstallautomake
#sudoapt-getinstalllibtool
步骤2.进入tslib目录
#cdtslib/
步骤3.设置环境变量,指向交叉编译器路径
#exportPATH=/usr/local/arm/4.4.1/bin:
$PATH
#exportTOOLCHAIN=/usr/local/arm/4.4.1
#exportTB_CC_PREFIX=arm-linux-
#exportPKG_CONFIG_PREFIX=$TOOLCHAIN/arm-linux
步骤4.运行脚本
#./autogen.sh
#echo"ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache
步骤5.配置安装参数
#./configure--host=arm-linux
--cache-file=arm-linux.cache
--enable-inputapi=no
PLUGIN_DIR=/usr/local/arm/tslib/plugins
-prefix=/usr/local/arm/tslib/build
-host=arm-linux
--cache-file=arm-linux.cache2>&1|teeconf_log
步骤6.编译
#make2>&1|teemake_log
#makeinstall
tslib的配置
步骤1.编译后会出现bulid目录。
进入build目录,编辑‘ts.conf’文件
#cdbuild/etc
#geditts.conf
打开文件后,编辑该文件,去掉‘module_rawinput’前面的#号和空格。
注意如果‘module_raw
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式设计报告基于ARM6410的Qtopia 443的移植 嵌入式 设计 报告 基于 ARM6410 Qtopia 443 移植