第十五课 嵌入式GUI课件_第1页
第十五课 嵌入式GUI课件_第2页
第十五课 嵌入式GUI课件_第3页
第十五课 嵌入式GUI课件_第4页
第十五课 嵌入式GUI课件_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1嵌入式系统AnIntroductiontoEmbeddedSystem第十五课嵌入式GUI浙江大学计算机学院陈天洲2011.4.272011夏学期,周三下午1-3节,周四晚上1-3节玉泉曹光彪西501第十五课嵌入式GUI2

2课程大纲

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI简介

XWindows

Tiny-X体系结构

QT

MiniGUI

第十五课嵌入式GUI嵌入式芯片中的GPU重邮信科采用VivanteGPU开发TD-SCDMA芯片目的高带宽3G基带处理富媒体应用第十五课嵌入式GUI手机上的GPU微软WM系统GDI,通常由CPU运算iPhone、Android等手机,有专用GPU均支持OpenGLES2.0iPhone的桌面动画效果是基于CoreAnimation技术,属于ESAndroid利用OpenGLES來处理器桌面卷动与动画切换特效OpenGLES在手机上的工作,主要是用來处理图形相关数据第十五课嵌入式GUIAppleTVAppleTV第一版本IntelPentiumM1.0GHz2MBofL2高速缓存nVidiaG72M显示卡

64MBDDR2内存内置的40GB硬盘播放iTunes第十五课嵌入式GUIAppleA4处理器A4处理器应用于新一代AppleTV尺寸仅有上代产品的四分之一98x98x23mm重270gIPhoneIPADAppleA4处理器组成A4封装有三层两层RAM(三星K4X1G323PE,256M)一层含有微处理器ARMCPU+GPUARM架构,1GHz主频,Cortex-A8单核心微架构显示芯片(PowerVRSGXGPU)2024/11/6第十五课嵌入式GUI6Nvidia的TegraARM架构CPU+整合HDvideo处理单元+图像处理单元+音频处理单元+低电压版本GeForceGPU2008年6月Tegra600/650800MHzARM11CPU支持1080pH.264解码的视频处理器图片处理器音频处理器超低功耗的GeForceGPU运行功耗却仅为1W左右便携式移动计算设备的应用解决方案其极低的系统功耗和强劲的媒体处理能力第十五课嵌入式GUI嵌入式GPU(EmbeddedGPU)类似于显示卡对嵌入式处理器提供辅助图形计算能力产品高画质手持装置、销售点终端机、医疗装置、多功能打印机、赌场游戏机、工业用计算机、服务器等嵌入式及消费性应用装置编程以OpenGL2.0为主流面向图形编程第十五课嵌入式GUI多屏幕嵌入式GPUAMD基于OpenCL和Eyefinity技术桌面级嵌入式GPU最多支持6屏输出,嵌入式GPUE6760VIA基于S3Chrome5400E的双屏版eH1基于S3Chrome5400EW核心的四屏版uH8采用两颗S3Chrome5400EW核心的八屏版uH89第十五课嵌入式GUIARM平台上的GPUPowerVR最主流除了在ARM中应用,也用于intel的凌动处理器最好性能,仅仅接近AMD与NVIDIQA能整合进SOC成为单芯片系统的一部分,而不是独立显卡其次是ATI后被Qualcomm所购买的Adreno接著是NVIDIA使用在Tegra之中的GeForce核心ARM自己也开始出GPU,称为Mali第十五课嵌入式GUIPowerVR英国Imagination公司目前PowerVRSGX5452到16个核心数量苹果A5采用的是PowerVRSGX543MP2性能支持DX10.1/OpenGLES2.X/OpenGL3.X/OpenVG1.X/OpenCL1.X技术,核心频率200MHz每秒能生成4000万个多边形,像素处理能力则达1Gpixels/s11第十五课嵌入式GUIAdreno第三代产品配备1.5GHz增强内核的QSD8672配备1.2GHz增强内核的MSM8260与MSM8660三款产品均为双CPU架构。2011代号Krait(环蛇)的Snapdragon移动处理器微架构单核MSM8930:全球首款集成LTEModem的单芯片解决方案,面向主流智能手机,将集成Adreno305GPU,性能是第一代Adreno的6倍双核MSM8960:全球首款集成多模式3G/LTE基带的双核方案,面向多任务智能手机和平板机。双核心可实现异步频率,支持双通道LPDDR内存,集成Adreno225GPU,图形性能是第一代Adreno8倍四核版APQ8064:面向下一代计算和娱乐设备,内置四个异步CPU核心,核心最高频率2.5GHz,集成Adreno320四核GPU,图形性能将是第一代Adreno的15倍以上。整体性能方面,APQ8064是第一代Snapdragon处理器的12倍,同时功耗下降了75%12第十五课嵌入式GUIGeForce超低功耗(ULP)架构设计Tegra213第十五课嵌入式GUIMali目前是第四代,Mali-T604硬件“tri-pipe”三管线架构,可配置为1到4个Shader核心,厂商可自行配置二级缓存(推荐每核心32KB),内建MMU显存管理单元可支持虚拟显存。支持4x/16x全屏抗锯齿,支持AMBAAXI、AMBA4总线接口。软件在OpenGLES1.1/2.0、OpenVG1.1的基础上,加入了对OpenCL1.1/1.2和DirectX{Windows8}的支持。ARMv7CPU核心和GPU都以支持OpenCL1.114第十五课嵌入式GUI嵌入式GPU性能比较15第十五课嵌入式GUI16

16课程大纲

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI简介

XWindows

Tiny-X体系结构

QT

MiniGUI

第十五课嵌入式GUIOpenGLES2.0OpenGL(全写OpenGraphicsLibrary)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)OpenGLES(OpenGLforEmbeddedSystems)是OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计从OpenGL裁剪定制而来的,去除了glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性免授权费的,跨平台的,功能完善的2D和3D图形应用程序接口API17第十五课嵌入式GUIOpenGLES2.0

两个版本OpenGLES1.x针对固定管线硬件的OpenGLES2.x针对可编程管线硬件。KhronosGroup在2005-8发布commonprofileKhronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。业界标准应用程序编程接口(API)可以大大提高不同消费电子设备的3D图形渲染速度,在嵌入式系统上实现了全面可编程的3D图形18第十五课嵌入式GUI具体使用,参考浙江大学《智能终端软件开发》中openGLes课件19第十五课嵌入式GUI20

20课程大纲

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI简介

XWindows

Tiny-X体系结构

QT

MiniGUI

第十五课嵌入式GUI21嵌入式GUI简介嵌入式设备对GUI的限制

CPU速度相对来说较慢,一般不具备浮点运算功能或浮点运算功能较弱内存、外存容量小电量有限嵌入式GUI设计包括以下3个方面:硬件设计,通过LCD控制器把LCD显示器和开发系统连接起来。驱动程序设计,为输出输入设备如LCD设计驱动程序,使硬件能驱动起来用户界面程序设计,使用嵌入式系统提供的函数库进行图形化程序设计21第十五课嵌入式GUI嵌入式GUI的模块GUI用户接口模块为上层应用软件开发人员提供方便、易用的API接口函数屏蔽了GUI的设备实现细节GUI对象模块对窗口环境中的逻辑对象进行组织管理包括对象的添加、删除引发的对象链表的更新,以及GUI窗口显示的维护,如窗口切换、焦点切换、对象的隐藏和恢复等操作引发的对象属性的更新,还有对不同控件的各种事件的响应GUI基本图形模块实现对显示输出设备的操作,如画点、画线、画矩形等基本功能对于字符的解析输出,以及对图形的解析输出独立于具体的设备驱动程序,与物理设备之间形成“设备抽象层”GUI消息驱动模块负责GUI的消息接收和与其它任务的通讯以及消息队列的维护22第十五课嵌入式GUI嵌入式GUI的特点可移植性较高的稳定性和可靠性系统开销少占用的存储空间以及运行时占用资源少运行速度以及响应速度快较高可配置性可裁减性、界面特性配置、皮肤和主题配置23第十五课嵌入式GUI嵌入式GUI系统结构一个能够移植到多种硬件平台上的嵌入式GUI系统,应用至少抽象出两类设备基于图形显示设备(如VGA卡)的图形抽象层GAL(GraphicAbstractLayer)基于输入设备(如键盘,触摸层等)的输入抽象层IAL(InputAbstractLayer)[2]24第十五课嵌入式GUI目前在嵌入式系统比较流行的GUI国外Qt/Embedded是一个C++函数库,支持真正的组件编程MicroWindows开放源码,C/S结构,三层,LGPLOpenGUI适合于x86,可移植性比较差Tiny-X是标准X-windows系统的简化版国内MiniGUI基于Linux,轻量级自由软件,LGPL清华大学教师魏永明先生Kingmos-GWME消息事件驱动,丰富的基本控件和高级控件2525第十五课嵌入式GUI26对比MiniGUIMicroWindowsQT/EmbeddedAPIWin32风格X,Win32的子集QT(C++)API是否完备是Win32支持赏不完备是函数库的典型大小500K600K1.5M可移植性很好很好较好(但函数库本身的跨平台交叉编译很困难)授权条款GPL/商业许可证MPL/LGPLQPL/GPL/商业许可证多进程支持好X接口的多进程支持好,Win32的接口尚不支持好健壮性/稳定性好一般一般多语种支持独特的多字符集支持功能,更加适合嵌入式系统一般采用UNICODE,但效率低可配置和可定制性好(提供了大量编译配置选项,可配置能力很强)一般差系统资源耗费小(多线程和MiniGUI-Lite均是针对最小系统资源消耗设计)较大(基于UNIX套接字的传统客户/服务器体系,进程间的通讯频繁,系统资源消耗较大)最大(用C++实现,系统资源消耗最大)效率好一般一般操作系统支持Linux/uClinux,eCos,uC/OS-II,VxWorks等LinuxLinux已知能运行的的平台x86、ARM、MIPS、PowerPC、StrongARM主频最低需30MHz。x86、ARM、MIPS、StrongARM主频最低需70MHz。x86、ARM、StrongARM主频最低需100MHz。使用是否广泛在中国大陆、台湾地区等使用广泛。产品涉及普通PC上的Linux发行版、PDA等手持设备、彩票机/POS机、机顶盒等等。主要针对手持设备。用户主要限于美国,国内有少数用户。主要针对高端手持设备。在欧美、韩国等地区使用较为广泛。第十五课嵌入式GUI27

27课程大纲

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI简介

XWindows

Tiny-X体系结构

QT第十五课嵌入式GUI28XWindows架构采用客户端/服务器的设计概念XWindows由3部分组成客户端服务器X协议XWindows是事件驱动大部分时间处于一种等待事件发生的状态28第十五课嵌入式GUI29XWindows的基本的API函数库29第十五课嵌入式GUI30

30课程大纲

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI简介

XWindows

Tiny-X体系结构

QT

MiniGUI

第十五课嵌入式GUI31Tiny-X系统框架标准X-windows系统的简化版设计目标在小容量内存的环境下运行适合用作嵌入式linux的GUI系统采用标准的Client/Server体系结构在嵌入式系统中使用Tiny-X图形用户界面开发产品,上层的应用程序的编写很方便31第十五课嵌入式GUI32Tiny-X系统架构32第十五课嵌入式GUI33FrameBuffer――帧缓冲器TinyX(Xfbdev)――TinyX为Xwindows的微缩版,有经过精简的Xlib类库Glib――包括一些基础数据类型和典型的C程序需要的功能GDK――是建立在Xlib上的针对图形图像类封装的底层图形库

Tiny-X结构说明(1)33第十五课嵌入式GUI34Tiny-X结构说明(2)GTK建立在Xlib和GDK上的高级面向对象的类库窗口管理器(QVWM)一种类似于window95风格的窗口管理器GladeGTK的集成开发环境34第十五课嵌入式GUI35Tiny-X库的调用关系

35第十五课嵌入式GUI36

36课程大纲

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI简介

XWindows

Tiny-X体系结构

QT

MiniGUI

第十五课嵌入式GUIQt基础Qt是跨平台的C++图形用户界面(GUI)工具包,它是TrollTech公司的标志产品。Qt工具包有两种不同的版本一种是用于商业性质的专业版另一种是用于开发X平台自由软件的自由版用自由版开发软件都必须作为自由软件公开如果要用Qt编写非自由软件,则需要购买专业版。Qt是一种跨平台的GUI工具包,软件能非常方便地应用于绝大多数操作系统MicrosoftWindows,Linux,Solaris,SunOS,HP_UX,DigitalUnix,Irix,FreeBSD,BSD/OS,SCO,AIX37第十五课嵌入式GUIQt特征面向对象:模块设计,注重软件构件和元素的可重用性。构件支持:提供signal和slot,对象之间可在不知道对方信息的情况下进行合作。方便性:跨平台GUI工具包,对编程人员隐藏了处理不同窗口系统时潜在的问题。国际化:Qt用户界面文本,可以通过消息翻译表被译成各国语言。丰富的API完整的组件:按钮、滚动条、自动布局组件等优越的绘图功能2D/3D图形润色功能38第十五课嵌入式GUIQt与X11的关系X11是XWindow系统第11版基于X的应用是通过调用Xlib的库函数来实现其各种功能的。Xlib是底层库在其上又发展出比Xlib更高层次的库函数,称为工具包将一些常用界面图形或组件按面向对象编程的方式组织到一起,供应用软件使用。不同公司或组织开发出不同的工具包,如Xt工具包,Motif工具包,Qt工具包等Qt工具包是优秀强大的GUI工具包

linux上流行的桌面环境KDE是基于Qt开发出的39第十五课嵌入式GUIQt与X11的关系40第十五课嵌入式GUIQt应用程序的执行过程41第十五课嵌入式GUIQt基础Qt的三个主要基类:1.QObject QObject是所有能够处理signal,slot和事件的Qt对象的基类。Qt为对象的通信以及signal/slot连接提供了强大的机制,signal/slot机制比传统的回调规则更先进。 所有Qt组件都继承QObject和使用signal/slot机制2.QApplication QApplication类负责GUI应用程序的控制流程和主要的设置,它包含主事件循环体,负责处理和调度所有来自窗口系统和其他资源的事件,并且处理应用程序的开始、结束以及会话管理,还包括应用程序方面的设置。

QApplication实现的主要功能有:

1)初始化应用程序、并设置用户桌面的一些特性。如字体设置等。

2)执行事件处理,从当前的窗口系统接收事件并将其送给目标组件。

3)解析命令行的变元和设置相应的内部状态

4)定义应用程序的外观和感受

5)指明应用程序如何分配颜色

6)指明默认的文本编码

7)管理应用程序的鼠标、光标

8)提供完善的会话管理,使用户注销时终止应用程序42第十五课嵌入式GUIQt基础3.QWidgetQWidget类是所有用户接口对象的基类,它继承QObject类的属性。组件是用户界面的单元组成部分,它接收鼠标、键盘和其他从窗口系统来的事件,并把它自己画在屏幕上。一个不能移植到其父组件的组件成为顶层组件QWidget类有很多成员函数,但是一般不直接使用,而是由其子类继承,使用函数功能。所有的组件都继承QWidget类,因此它的属性其他组件都可以用。组件通常以QWidget类的抽象子类作为基类,利用基类的属性并加上自己的特性作为它自己特有的属性。如QPushButton以QButton为基类,而QButton是QWidget的抽象子类,它的属性可以被子类所继承,而它却不能自己使用,即一般构建的是QButton的子类。43第十五课嵌入式GUIQt与MotifQt是基于Xlib的工具包,Motif是基于Xt的工具包,而Xt是基于Xlib的工具包,因此二者建立的底层基础是相同的。两者的关系如图44第十五课嵌入式GUIQt与Motif的区别编程语言和结构:Qt使用C++语言,具有面向对象的特点,而Motif使用的是C语言,因此Qt编写的程序易懂、易维护内涵:Qt仅是一种图形用户界面的工具包和开发工具;而Motif除了高级工具包外,还代表窗口管理器MotifWindowManager,还代表一种图形用户界面的风格,即Motif风格应用范围:Qt具有跨平台的特性,可以在UNIX和Windows等操作系统上使用;而Motif则只能在UNIX上使用,不具有适应多种平台的特性,适应范围小图形:Qt图形功能更强大,Motif实现图形功能方面有时还需要利用Xlib的函数来实现速度:Qt的速度比Motif快45第十五课嵌入式GUIKDE简介KDE是一种图形桌面集成环境,是一套使Unix系统拥有图形操作集成环境的软件。KDE起源于1996年10月,由德国人MattiasEttrich发起的KDE组织(KDesktopEnvironment)计划的内容标准的拖放机制;统一的应用程序框架;类似ActivX的机制;大量软件,如KFM(K),KPresnenter(类似PowerPoint),KIllustration、KOrganizer等;KDE的底层是XServer,然后是KWM(KWindowManager),KFM(K)和许多不同种类的客户/服务器等。KDE为用户提供了方便且全面的服务,并有专门的KDE小组维护这套软件KDE支持的操作系统有:Linux,FreeBSD,Solaris,HP_UX和MKLinux等。46第十五课嵌入式GUIKDE3.2桌面47第十五课嵌入式GUIQt的结构48第十五课嵌入式GUIQtEmbedded结构49第十五课嵌入式GUIQtopia结构50第十五课嵌入式GUI51

51课程大纲

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI简介

XWindows

Tiny-X体系结构

QT

MiniGUI第十五课嵌入式GUIMINIGUI面向嵌入式系统的高级窗口系统(WindowingSystem)和图形用户界面(GraphicalUserInterface,GUI)支持系统魏永明先生于1998年底开始开发2002年创建北京飞漫软件技术有限公司提供商业技术支持,同时也继续提供开源版本飞漫软件是中国地区为开源社区贡献代码最多的软件企业最后一个采用GPL授权的MiniGUI版本是1.6.10,从MiniGUI2.0.4开始MiniGUI被重写并使用商业授权支持Linux/uClinux、eCos、uC/OS-II、VxWorks、ThreadX、Nucleus、pSOS、OSE等操作系统和数十种SoC芯片,已验证的硬件平台包括ARM-basedSoCs、MIPSbasedSoCs、IA-basedSoCs、PowerPC、M68K(DragonBall/ColdFire)、Intelx86等等,广泛应用于通讯、医疗、工控、电力、机顶盒、多媒体终端等领域52第十五课嵌入式GUIMINIGUI3.0/4.0图形抽象层(GraphicsAbstractionLayer,GAL)。输入抽象层(InputAbstractionLayer,IAL)。图形设备接口(GraphicsDeviceInterfaces,GDI)。消息处理模块(MessagingModule)。多窗口处理模块(WindowingModule)和控件(Control或Widget)。外观支持(LookandFeel)。53第十五课嵌入式GUIMiniGUIhelloworld#include<stdio.h>#include<minigui/common.h>#include<minigui/minigui.h>#include<minigui/gdi.h>#include<minigui/window.h>

intMiniGUIMain(intargc,constchar*argv[]){MSGMsg;HWNDhMainWnd;MAINWINCREATECreateInfo;

#ifdef_MGRM_PROCESSESJoinLayer(NAME_DEF_LAYER,"helloworld",0,0);#endifCreateInfo.dwStyle=WS_VISIBLE|WS_BORDER|WS_CAPTION;CreateInfo.dwExStyle=WS_EX_AUTOSECONDARYDC;CreateInfo.spCaption="Hello,World";CreateInfo.hMenu=0;CreateInfo.hCursor=GetSystemCursor(0);CreateInfo.hIcon=0;CreateInfo.MainWindowProc=DefaultMainWinProc;CreateInfo.lx=0;CreateInfo.ty=0;CreateInfo.rx=g_rcScr.right;CreateInfo.by=g_rcScr.bottom;CreateInfo.iBkColor=COLOR_lightwhite;CreateInfo.dwAddData=0;CreateInfo.hHosting=HWND_DESKTOP;

hMainWnd=CreateMainWindow(&CreateInfo);

if(hMainWnd==HWND_INVALID)return-1;

while(GetMessage(&Msg,hMainWnd)){TranslateMessage(&Msg);DispatchMessage(&Msg);}

MainWindowThreadCleanup(hMainWnd);return0;}54第十五课嵌入式GUIMiniGUIV3.0主窗口双缓冲区(DoubleBufferingMainWindow)当MiniGUI3.0的主窗口具有双缓冲区时,可以在自定义缓冲区中获得整个主窗口的渲染结果。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论