嵌入式系统学习课件C8_第1页
嵌入式系统学习课件C8_第2页
嵌入式系统学习课件C8_第3页
嵌入式系统学习课件C8_第4页
嵌入式系统学习课件C8_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介第一页第二页,共90页。uCOS-II的不足之处只有多任务调度的简单内核内存管理过于简单,几乎没有动态内存管理功能文件系统和图形界面需要外挂对于设备驱动程序没有专门统一的接口第二页第三页,共90页。具体的扩展工作建立文件系统;外设及驱动程序的实现;基于Unicode汉字库的实现方法;基本绘图函数的实现;其它实用API函数;第三页第四页,共90页。基于

COS-II扩展RTOS的体系结构第四页第五页,共90页。1.系统外围设备的硬件部分系统外围设备的硬件部分包括:液晶显示屏(LCD)、USB通信模块、键盘、海量Flash存储器、系统的时钟和日历。外围设备的硬件部分是保证系统实现指定任务的最底层的部件。2、驱动程序模块驱动程序是连接底层的硬件和上层的API函数的纽带,有了驱动程序模块,就可以把操作系统的API函数和底层的硬件分离开来。硬件的改变、删除或者添加,只需要随之改变、删除或者添加提供给操作系统的相应的驱动程序就可以了。而不会影响到API函数的功能,更不会影响到用户的应用程序。第五页第六页,共90页。3.操作系统的API函数在操作系统中提供标准的应用程序接口(API)函数,可以加速用户应用程序的开发,统一应用程序的标准,同时也给操作系统版本的升级带来了方便。在API函数中,提供了大量的常用模块,可以大大简化用户应用程序的编写。4.实时操作系统的多任务管理

C/OS-Ⅱ作为操作系统的内核,主要的任务就是完成多任务之间的调度和同步。5.系统的消息队列这里所说的系统的消息队列是以

C/OS-Ⅱ的消息队列派生出来的系统消息传递机制,用来实现系统的各个任务之间、用户应用程序的各个任务之间以及用户应用程序和系统的各个任务之间的通信。第六页第七页,共90页。6.系统任务系统任务主要包括液晶显示屏(LCD)的刷新任务、系统键盘扫描任务。这两个任务是操作系统的基本任务,随着操作系统的启动而运行。7.用户应用程序用户的应用程序建立在系统的主任务(Main_Task)基础之上。用户应用程序主要通过调用系统的API函数对系统进行操作,完成用户的要求。在用户的应用程序中也可以创建用户自己的任务。任务之间的协调主要依赖于系统的消息队列。第七页第八页,共90页。本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介第八页第九页,共90页。图形用户接口函数基于32位嵌入式处理器的硬件平台,有着较高的运算速度和大容量的内存。为人机交互建立GUI无疑为最首选的方式。本小节将建立针对常用的图形界面的应用建立相应的API函数。主要包括:基本绘图函数。基于Unicode的汉字字库典型的控件第九页第十页,共90页。绘图API函数绘图是操作系统的图形界面的基础,本系统为图形界面提供了丰富的绘图函数。在多任务操作系统中,绘图设备上下文(DC)是绘图的关键。绘图设备上下文(DC)保存了每一个绘图对象的相关参数(比如:绘图画笔的宽度、绘图的原点坐标等)。在多任务操作系统中,通过绘图设备上下文(DC)来绘图,可以保证在不同的任务绘图的参数是相互独立的,不会互相影响。第十页第十一页,共90页。DC的定义typedefstruct{ intDrawPointx; intDrawPointy;//绘图所使用的坐标点 intPenWidth; //画笔宽度 U32PenMode;//画笔模式 U32PenColor; //画笔的颜色 intDrawOrgx; //绘图的坐标原点位置 intDrawOrgy; intDrawRangex; //绘图的区域范围 intDrawRangey; U8bUpdataBuffer; //是否更新后台缓冲区 U32Fontcolor;//字符颜色}DC,*PDC;第十一页第十二页,共90页。DC的初始化在绘图设备上下文(DC)中保存了每一个绘图对象的相关参数。在系统启动的时候,通过调用initOSDC()函数初始化绘图设备上下文(DC),为以后创建绘图设备上下文(DC)分配存储空间。第十二页第十三页,共90页。DC的使用第十三页第十四页,共90页。典型的绘图函数(a)voidinitOSDC();PDCCreateDC();voidDestoryDC(PDCpdc);voidMoveTo(PDCpdc,intx,inty);voidLineTo(PDCpdc,intx,inty);voidDrawRectFrame(PDCpdc,intleft,inttop,intright,intbottom);voidCircle(PDCpdc,intx0,inty0,intr);第十四页第十五页,共90页。典型的绘图函数(b)voidSetDrawOrg(PDCpdc,intx,inty,int*oldx,int*oldy)设置绘图设备上下文(DC)的原点第十五页第十六页,共90页。典型的绘图函数(c)voidSetDrawRange(PDCpdc,intx,inty,int*oldx,int*oldy)设置绘图设备上下文(DC)的绘图范围x,y:设定的横向、纵向绘图的范围,如果x(或者y)为1,则表示x(或者y)方向的比例随着y(或者x)方向的范围按比例缩放。如果参数为-1,表示方向相反第十六页第十七页,共90页。DC创建PDCpdc;pdc=CreateDC();第十七页第十八页,共90页。DC设置举例PDCpdc;pdc=CreateDC();SetDrawOrg(pdc,170,50,&oldx,&oldy);SetDrawRange(pdc,800,-1,&oldxrange,&oldyrange);上面的程序代码创建一个绘图设备上下文(DC),将原点坐标设定在液晶屏设备坐标的(170,50),并把绘图的逻辑坐标的水平值设置成800,垂直范围按照液晶屏实际的横纵比例缩放。

实验1绘图的API函数第十八页第十九页,共90页。字符集与字体模块矢量字体基于矢量的的字体,称之为可缩放的字体,轮廓字体,或矢量字体。由于这些字体在存储时亦只存储了其轮廓,因此,在不同的缩放大小下依然能保持美观而不会出现“锯齿”。这点是很适合其完整地在Web上传输。一般说来,Logo、线形艺术作品、图表、动画、抽象艺术作品等凡较容易定义颜色区域的图形,用矢量图都能产生很好的效果。计算机是以处理数字为基础,如果要处理文字就需要规定一个编码系统用不同的数字来表示相应的字符。我们较为熟悉的有GB、GBK、BIG5、ASCII等等。由于编码不统一,这些编码系统之间经常相互冲突。事实上,两种编码可能使用相同的数字代表两个不同的字符;或者使用不同的数字代表相同的字符。在Unicode的双字节版本中(UTF-16)使用的是16位编码方式,可提供65,000多个字符代码指针。其编码容量可涵盖世界上几乎所有的语言,不仅包括拉丁语,希腊语,斯拉夫语,希伯来语,阿拉伯语,亚美尼亚语,还包括中文,日文和韩文这样的象形文字,以及平假名,片假名,孟加拉语,泰米尔语,泰国语,老挝语等。目前还有大约8000个代码指针未用,可供扩展。第十九页第二十页,共90页。基于Unicode的字库什么是Unicode使用Unicode的优点字符的存储方式编写Unicode的程序Unicode字模的提取Unicode字库的显示及相关函数第二十页第二十一页,共90页。什么是UnicodeUnicode是统一编码的紧缩写法世界上常用的编码系统有数百种之多,但所有的这些编码系统,没有哪一个能有足够的字符,可以适用于多种语言文本由于编码不统一,这些编码系统之间经常相互冲突Unicode出现改变了这一切在Unicode的双字节版本中(UTF-16)使用的是16位编码方式,可提供65,000多个字符代码指针第二十一页第二十二页,共90页。使用Unicode的优点使用Unicode避免了乱码的产生,使得国际间文本数据交换成为可能解决了多语言文本同平面共存的问题实现了软件的全球化,避免了软件产品在贯穿多个平台、语言和国家时的重建第二十二页第二十三页,共90页。字符的存储方式

在图形操作系统中,字符(包括:中文、英文)通常有2种存储方式。一种方式存储的是字符的图形点阵另一种方式是存储汉字的矢量图形

在嵌入式处理中,因为处理器的性能和嵌入式系统资源还不如PC机,而且,嵌入式只是针对专一控制而应用的系统。基本上,没有必要使用矢量字库。第二十三页第二十四页,共90页。Unicode字库分配

本系统中编码采用双字节版本的Unicode格式收集了ASCII字符(0x0000-0x00ff)256个特殊图形符号(0x2600-0x267f和0x2700-0x27bf)320个中文字符(0x4e00-0x9fff)20992个。第二十四页第二十五页,共90页。Unicode字库相关函数

转换函数voidInt2Unicode(intnumber,U16str[]);intUnicode2Int(U16str[]);voidstrChar2Unicode(U16ch2[],constcharch1[]);输出函数voidTextOut(PDCpdc,intx,inty,U16*ch,U8bunicode,U8fnt);voidTextOutRect(PDCpdc,structRECT*prect,U16*ch,U8bunicode,U8fnt)

第二十五页第二十六页,共90页。典型的控件 控件是可视化开发的基础。对于开发应用程序的用户来说,控件是一个独立的组件,它有着自己的显示方式,自己的动态内存管理模式,甚至有的控件还可以向系统发送自己的消息。用户不需要掌握控件的内部到底是如何工作的,用户只需要通过控件提供的API函数,改变控件相应的属性,从而改变控件的显示方式。控件的引入可以方便用户的开发,加速用户应用程序界面的编写速度。为运行在操作系统上的应用程序的界面提供了统一的标准,方便了使用。第二十六页第二十七页,共90页。系统中的控件文本框控件列表框控件图片框控件按钮控件窗体第二十七页第二十八页,共90页。控件的使用流程第二十八页第二十九页,共90页。通用的系统控件对一个通用的系统控件,包含了如下的数据结构: typedefstruct{ U32CtrlType; //控件的类型 U32CtrlID; //控件的ID structRECTListCtrlRect;//控件的位置和大小 U32FontSize; //控件的字符大小 U32style; //控件的的边框风格 U8bVisible; //是否可见 }OS_Ctrl;第二十九页第三十页,共90页。主要函数介绍列表框控件CreateTextCtrl定义:PTextCtrlCreateTextCtrl(U32CtrlID,structRECT*prect,U32FontSize,U32style,char*KeyTable,PWndparentWnd)功能:创建文本框控件,返回指向文本控件的指针参数说明:CtrlID:创建的文本框控件的ID,此控件ID必须是唯一的rect:指向文本框控件大小和位置的指针FontSize:文本框的字体大小,可以是表1-1数值中的一种style:文本框的风格,可以是表3-1中的一种KeyTable:文本框的字符映射表,即按键对应的在文本框中显示的字符.如果是NJLL,表示使用默认的字符映射表.parentWnd:指向控件父窗口的指针,如果是NJLL,表示没有父窗口,空间属于桌面第三十页第三十一页,共90页。DestoryTextCtrl定义:voidDestoryTextCtrl(PTextCtrlpTextCtrl)功能:删除文本框控件参数说明:pTextCtrl:指向文本框的指针SetTextCtrlText定义:voidSetTextCtrlText(PTextCtrlpTextCtrl,U16*pch)功能:设置文本框的文本参数说明:pTextCtrl:指向文本框的指针pch:指向文本框显示文字的字符串指针GetTextCtrlText

定义:U16*GetTextCtrlText(PTextCtrlpTextCtrl)

功能:返回指向文本框文字的指针第三十一页第三十二页,共90页。实验2文本框控件,列表框控件第三十二页第三十三页,共90页。本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介第三十三页第三十四页,共90页。什么是文件系统()文件系统的定义——处理文件的操作系统的部分称为文件系统.是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用文件系统的功能——文件的构造、命名、存取、采用、保护和实现等。文件系统的存储媒质——磁盘、软盘、光盘、FLASH盘等等第三十四页第三十五页,共90页。文件系统的发展DOS1.0(1981)DOS3.0(1984)Win95(1995)Win95Osr2(1996)Win98(1998)Win3.1(1992)FAT12FAT16VFATFAT32第三十五页第三十六页,共90页。FAT12/FAT16/FAT32的比较FAT12FAT16FAT32SizeofFATentry12bits16bits32bitsMaxnumofclusters4,08665,526268,435,456Clustersizeused0.5KB-4KB2KB-32KB4KB-32KB最大磁盘容量16,736,256

(16M)2,147,123,200

(2G)about2^41

(2T)第三十六页第三十七页,共90页。基于FLASH的嵌入式文件系统第三十七页第三十八页,共90页。FLASH读写的特点(1)必须以Page为单位进行读写;(2)写之前必须先擦除原有内容;(3)擦除操作必须对Block进行,即一次至少擦除一个Block的内容针对这种情况,将Flash的一个Page定为1个扇区,将其1个Block,32个扇区定为一个簇,这样,簇的容量刚好为512*32=16K,满足FAT16对簇大小的要求第三十八页第三十九页,共90页。FLASH文件系统的要求(1)掉电安全:嵌入式系统的运行环境一般比较恶劣,但同时又要求有较高的可靠性。这就对FLASH文件系统进出了较高的要求,无论程序崩溃或系统掉电,都不能影响文件系统的一致性和完整性,文件系统的写入、垃圾回收等操作对系统异常中止都非常敏感,极易造成数据丢失和数据垃圾,在文件系统设计和选用时应考虑;(2)平均使用(wear-leveling):由于FLASH扇区的擦除次数有限制,要求能够均匀使用各扇区,以延长FLASH的使用寿命;(3)高效垃圾回收(garbagecollection):任何存储器在分配使用一段时间后,都会出现空区和碎片数据,为保证存储空间的使用率。方法是先移动扇区数据,再擦除整个扇区;(4)低空间消耗(lovoverhead):指文件系统管理结构在FLASH存储器上的空间消耗,该空间用于FS建立,而不能用于实际数据的存储,可以提高有用数据的存储空间第三十九页第四十页,共90页。FLASH文件系统的分类(1)集中管理文件系统特点:存储器空间的使用信息集中存放在存储器的某个地方,存储器的其它区域用于存放数据,数据必须依赖关键信息区才能被索引和使用缺点:需要大量缓存空间,当某扇区需要更新时,先将扇区数据备份到RAM中,再进行擦除操作,最后将修改后的备份写入FLASH,缺点是难以保证掉电安全,不能均匀使用存储器空间,特别是关键信息区,对文件系统的使用个性都会改写该区,导致FLASH快速损坏;第四十页第四十一页,共90页。FLASH文件系统的分类(2)线性文件系统概述:每个文件相关的信息都连续存放在存储器中,实现简单,读写快速,文件系统的关键信息分布存放;优点:安全性好;能保证存储器的平均使用,延长了FLASH的使用寿命;缺点:对文件操作效率低,不易实现添加、插入、剪切等操作;第四十一页第四十二页,共90页。FLASH文件系统的分类(3)日志文件系统概述:日志结构的文件系统使用顺序的、只增的日志作为磁盘上唯一的组织文件系统数据的结构,文件的描述可以仍采用传统的索引组织方式。方法是在内存中将几次FS的修改汇集成一个大的日志条目(被称为段映像),然后动态分配磁盘空间并通过一次写操作写到磁盘上的一个连续的、固定大小的日志段(Segment)中。并定时或当系统发出同步写请求时保证日志同步写到磁盘上;优点:恢复快速。第四十二页第四十三页,共90页。几种开源的FLASH文件系统TFS(Tiny)概述:TFS是由原Lucent公司的EdSutter开发的嵌入式系统引导平台Umon的一部分。TFS是一种线性结构的文件系统,由多个存放的文件块组成。一个文件块包含一个文件的所有信息。优点:TFS提供了掉电安全机制和垃圾回收机制,需要额外的辅助空间,用于垃圾回收时的文件缓存和过程状态,如果出现终止,系统根据辅助空间的信息进行文件系统的恢复;缺点:文件的插入、剪切和个性需要较大的运行开销,即使是很小的修改,也要求将整修文件重写第四十三页第四十四页,共90页。几种开源的FLASH文件系统JFFS(JournalingFlash)概述:由瑞典Axis通信公司开发的文件系统,主要针对NOR型Flash存储器设计,提供了掉电安全,平均使用等特性,是基于Linux,由于遵循GPL开放源代码,易实现移植;第四十四页第四十五页,共90页。FAT16文件系统基本结构FAT文件系统由下面四部分组成保留区Reservedregion存放引导记录,BIOS信息等FAT区FAT信息列表

(12/16/32bits)根目录区目录信息列表

(32bytes)文件和目录区存放簇信息reservedFAT(p)FAT(b)Rootdirdirectory……第四十五页第四十六页,共90页。保留区ReservedRegion引导记录基本信息

……引导代码BIOS参数块

(BPB)字节/扇区(512,1024,2048,4096)扇区/簇(1,2,4,8,16,32,64,128)根目录数总扇区值介质类型

(硬盘,软盘,FLASH)reservedFAT(p)FAT(b)Rootdirdirectory……第四十六页第四十七页,共90页。FAT区通常有FAT(P)(primary)和FAT(B)(backup)每一个簇都有一个对应的FAT目录Cluster2Cluster3Clustern-1Clustern……FAT数据区reservedFAT(p)FAT(b)Rootdirdirectory………第四十七页第四十八页,共90页。FAT链表

(FAT16)……目录树第四十八页第四十九页,共90页。建立文件系统

COS-II本身不提供文件系统,针对嵌入式的应用,为适应大容量数据存储的需要,参考FAT16的格式,可以建立起一套简单的文件系统。第四十九页第五十页,共90页。文件系统简介此文件系统可以保存最多512个文件文件数据以簇为单位进行存储。为了便于管理和提高访问速度,文件系统中不提供存储子目录的管理。文件名的格式为8.3的格式文件名称均为大写第五十页第五十一页,共90页。文件系统的组织形式第五十一页第五十二页,共90页。文件的访问读取文件的时候,首先在文件目录表中找到相应的文件所对应的首簇的号码,读取完成一个簇以后,如果文件的长度大于16KB(一个簇),就从文件分配表中查找到下一个簇的号码,然后继续读取,直到文件分配表中的下一个簇号码为FFFFH时为止第五十二页第五十三页,共90页。文件系统实现过程文件相关的API函数文件的打开文件的读取文件的写入文件的关闭文件的列表第五十三页第五十四页,共90页。文件结构体文件结构体的定义如下:typedefstruct{ U8Buffer[BLOCK_SIZE]; //文件缓冲区 U32; //文件当前的簇的位置 U32; //打开文件的模式 U32; //文件缓冲区中已经读取/写入的字节数 U32; //读写的当前位置 U32; //文件的大小}FILE;可见,在FILE结构中包括了文件的缓冲区和其他的相关信息。第五十四页第五十五页,共90页。文件系统的相关函数始始化文件系统voidinitOS[],U32OpenMode)读文件到缓冲区U32ReadOS*p*ReadBuffer,U32nReadbyte)把缓冲区内容写入文件U32WriteOS*p*WriteBuffer,U32nWritebyte)关闭文件,释放缓冲区voidCloseOS*Pfile)实验3文件的操作第五十五页第五十六页,共90页。本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介第五十六页第五十七页,共90页。系统消息在多任务操作系统中,各个任务之间,用户应用程序的各个任务之间以及用户应用程序和系统的各个任务之间的通常是通过消息来传递信息和同步的。第五十七页第五十八页,共90页。消息与任务第五十八页第五十九页,共90页。本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介第五十九页第六十页,共90页。外设及驱动程序外设驱动程序可以对系统提供访问外围设备的接口,把操作系统(软件)和外围设备(硬件)分离开来。当外围设备改变的时候,只需更换相应的驱动程序,不必修改操作系统的内核以及运行在操作系统中的软件。本小节中,将建立几种典型外设的驱动程序标准接口。第六十页第六十一页,共90页。串行口 串行口符合RS-232标准,通讯的最高速度可以达到115200bps。串行口的接口函数如下:voidUart_Init(intUartnum,intmclk,intbaud);voidUart_Printf(char*fmt,...);charUart_Getch(char*Revdata,intUartnum,inttimeout);voidUart_SendByte(intUartnum,intdata);实验4串行口通信第六十一页第六十二页,共90页。液晶显示驱动程序液晶屏是内部有控制电路的液晶模块分辨率320x240使用双缓冲机制第六十二页第六十三页,共90页。显示缓冲区在系统的内存里开辟了一块内存作为液晶屏显示的后台缓冲区LCDBuffer,其定义如下:U32LCDBuffer[LCDHEIGHT][LCDWIDTH];其中,LCDBuffer为按双字映射存储的缓冲区(即:每四个字节表示一个点),写入的时候调用液晶屏的voidLCD_Refresh()函数,就可以把缓冲区的内容显示在液晶屏上。因为缓冲区是按双字存储的,所以LCDBuffer[y][x]对应的就是屏幕点(x,y)的像素值,每一个点用一个32位的整数表示,可以满足实现32位真彩色图片的显示,保证不同的液晶屏的兼容性。不同的液晶屏只需要更新LCD320.c和LCD320.h文件中的驱动程序即可第六十三页第六十四页,共90页。液晶模块的控制液晶模块有两种工作模式:图形方式:在图形方式下,模块上的缓冲区映射的是液晶屏上显示的图形点阵文本方式:在文本模式下,模块上的缓冲区对应的是液晶屏上显示的文本字符,包括:英文字符和英文标点符号。液晶屏的操作主要包括:初始化、设置液晶屏的工作模式(文本或者图形)、更新显示、开启(或者关闭)背光。第六十四页第六十五页,共90页。液晶驱动程序接口voidLCD_Init(void);voidLCD_printf(char*fmt,...);voidLCD_ChangeMode(U8mode);voidLCD_Refresh();voidLCDBkLight(U8isOpen);第六十五页第六十六页,共90页。键盘驱动程序本控制器使用的是4x4的键盘(16键),在S3C44B0X的GPD端口上由程序扫描控制,无需外围芯片在操作系统中,键盘扫描是通过uCOS-II的专门的一个任务来控制的支持系统的组合按键(相当于Ctrl、Shift等),最多可以支持16键中所有的功能按键同时组合第六十六页第六十七页,共90页。键盘驱动接口U32GetKey();低16位为键盘号码,高16位对应功能键扫描码(1有效)。此函数为死锁函数,调用以后,除非有按键按下,否则,函数不会返回。voidSetFunctionKey(U16Fnkey);设定功能键扫描码,1有效。可以提供组合按键。功能键不能单独返回。U32GetNoTaskKey();类似于GetKey(),但是,此函数不会释放此任务的控制权,除非有更高级的任务运行。第六十七页第六十八页,共90页。键盘消息在系统中,键盘有专门的任务来管理。当有按键按下的时候就会相应键盘消息键盘的消息类型为OSM_KEY消息参数WParam表示系统的键盘按键号码LParam表示按键时同时按下的功能键第六十八页第六十九页,共90页。等待键盘消息可以通过如下代码来等待并处理键盘消息POSMSGpMsg=0;//消息循环for(;;){ pMsg=WaitMessage(0);//等待消息 switch(pMsg->Message){ caseOSM_KEY: onKey(pMsg->WParam, pMsg->LParam); break; } DeleteMessage(pMsg);//删除消息,释放资源}第六十九页第七十页,共90页。其它实用API函数为了便于用户的应用开发,操作系统还提供了一些常用的API函数和数据结构。主要包括:双向链表的相关API函数系统的时间相关API函数系统的图形相关API函数第七十页第七十一页,共90页。双向链表API函数voidinitOSList();初始化链表,为链表分配动态空间voidAddListNode(PListplist,void*pNode);在指定的位置为链表增加一个节点voidDeleteListNode(PListpList);删除链表的指定节点PListGetLastList(PListpList);返回链表的最后一个节点第七十一页第七十二页,共90页。系统的时间API函数voidInitRtc();voidGet_Rtc(PstructTimetime);U8Rtc_IsTimeChange(U32hichChange);voidSet_Rtc(PstructTimetime);voidRtc_Format(char*fmtchar,U16*outstr);第七十二页第七十三页,共90页。图形相关API函数voidCopyRect(structRECT*prect1,structRECT*prect2);voidSetRect(structRECT*prect,intleft,inttop,intright,intbottom);voidInflateRect(structRECT*prect,intcx,intcy);U8IsInRect(structRECT*prect,intx,inty);第七十三页第七十四页,共90页。本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介第七十四页第七十五页,共90页。GUI的概念GUI的定义

GraphicsUserInterface,是指计算机与其使用者之间的图形化对话接口。GUI的主要特征:

——Windows,采用窗口界面,每个窗口是用户或系统的一个工作区域。一个屏幕上可以有多个窗口。——Icons,采用形象化的图标或图符,易于操作者理解与操作。——Menu,采用菜单,可供用户选择的功能提示——PointingDevices,指鼠标器、触摸屏等,便于用户直接对屏幕对象进行操作。第七十五页第七十六页,共90页。嵌入式GUI的特点体积小功能强;图形算法简洁、快速,占用系统资源少可靠性高;模块结构,便于移植和定制第七十六页第七十七页,共90页。嵌入式GUI的实现方法1)照需求开发满足自身特定需要的GUI系统;2)将GUI作为一个软件层从应用程序中剥离,GUI的支持逻辑由应用程序自己负责;3)设计一个支持大多数常见的GUI对象的应用编程接口库,使其具有与其他通用开发工具相类似的调用方法(如Win32)的GUI系统第七十七页第七十八页,共90页。几种典型的嵌入式GUICompactX-WindowSystem:可扩展性好、可移植性好,代码尺寸大Microwindows:开放源码的嵌入式GUI软件,可移植性好,图形功能出色。OpenGUI:自由软件。汇编实现的内核,并利用MMX指令进行了优化,OpenGUI运行速度非常快。支持32位处理器,可以在MS-DOS,QNX和Linux下运行。主要用来在这些系统中开发图形应用程序和游戏Qt/Embedded:QT库开发商Trolltech推出的面向嵌入式系统的QT版本。可移植性好,价格较贵。MiniGUI:自由软件,面向嵌入式系统或者实时系统的图形用户界面支持系统。它主要运行于Linux,还可以运行在任何一种具有POSIX线程支持的POSIX兼容系统上第七十八页第七十九页,共90页。嵌入式GUICompactX-WindowSystem:可扩展性好、可移植性好,代码尺寸大Microwindows:开放源码的嵌入式GUI软件,可移植性好,图形功能出色。OpenGUI:自由软件。汇编实现的内核,并利用MMX指令进行了优化,OpenGUI运行

温馨提示

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

评论

0/150

提交评论