版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统第六讲基于C/OS-Ⅱ的软件设计本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介基于COS-II扩展RTOS将COS-II移植到自己的硬件平台以后,接下来的工作就是对操作系统本身的扩充。介绍如何对COS-II进行必要的扩展,建立一个简单实用的实时操作系统(RTOS)为什么要扩展uCOS-IICOS-II仅仅一个实时多任务的内核,移植了COS-II以后,离实际的应用还是有一段距离的。要想实现一个相对完整、实用的嵌入式的实时多任务操作系统(RTOS),还需要相当多的扩展性的工作。具体的扩展工作建立文件系统;外设及驱动程序的实现;基于Unicode汉字库的实现方法;基本绘图函数的实现;其它实用API函数;基于COS-II扩展RTOS的体系结构1.系统外围设备的硬件部分系统外围设备的硬件部分包括:液晶显示屏(LCD)、USB通信模块、键盘、海量Flash存储器、系统的时钟和日历。外围设备的硬件部分是保证系统实现指定任务的最底层的部件。2、驱动程序模块驱动程序是连接底层的硬件和上层的API函数的纽带,有了驱动程序模块,就可以把操作系统的API函数和底层的硬件分离开来。硬件的改变、删除或者添加,只需要随之改变、删除或者添加提供给操作系统的相应的驱动程序就可以了。而不会影响到API函数的功能,更不会影响到用户的应用程序。3.操作系统的API函数在操作系统中提供标准的应用程序接口(API)函数,可以加速用户应用程序的开发,统一应用程序的标准,同时也给操作系统版本的升级带来了方便。在API函数中,提供了大量的常用模块,可以大大简化用户应用程序的编写。4.实时操作系统的多任务管理C/OS-Ⅱ作为操作系统的内核,主要的任务就是完成多任务之间的调度和同步。5.系统的消息队列这里所说的系统的消息队列是以C/OS-Ⅱ的消息队列派生出来的系统消息传递机制,用来实现系统的各个任务之间、用户应用程序的各个任务之间以及用户应用程序和系统的各个任务之间的通信。6.系统任务系统任务主要包括液晶显示屏(LCD)的刷新任务、系统键盘扫描任务。这两个任务是操作系统的基本任务,随着操作系统的启动而运行。7.用户应用程序用户的应用程序建立在系统的主任务(Main_Task)基础之上。用户应用程序主要通过调用系统的API函数对系统进行操作,完成用户的要求。在用户的应用程序中也可以创建用户自己的任务。任务之间的协调主要依赖于系统的消息队列。用户应用程序的建立在嵌入式硬件平台的基础上,有了实时多任务操作系统来管理硬件资源、进行任务协调,在操作系统平台上使用操作系统所提供的GUI(图形用户接口)及API(应用程序接口)函数来编制自己相应的用户应用程序了。嵌入式系统上运
行的应用程序的结构以ARM7TDMI结构的处理器为例,它不带有MMU(内存管理单元)。所以,操作系统和应用程序是编译在一起运行的。系统的启动和运行过程嵌入式控制器硬件初始化操作系统初始化LCD初始化装载字库调用系统配置文件创建任务初始化用户界面、时钟启动多任务调度主任务用户程序消息处理任务1任务n……本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介图形用户接口函数基于32位嵌入式处理器的硬件平台,有着较高的运算速度和大容量的内存。为人机交互建立GUI无疑为最首选的方式。本小节将建立针对常用的图形界面的应用建立相应的API函数。主要包括:基本绘图函数。基于Unicode的汉字字库典型的控件绘图API函数绘图是操作系统的图形界面的基础,本系统为图形界面提供了丰富的绘图函数。在多任务操作系统中,绘图设备上下文(DC)是绘图的关键。绘图设备上下文(DC)保存了每一个绘图对象的相关参数(比如:绘图画笔的宽度、绘图的原点坐标等)。在多任务操作系统中,通过绘图设备上下文(DC)来绘图,可以保证在不同的任务绘图的参数是相互独立的,不会互相影响。DC的定义typedef
struct{
int
DrawPointx;
int
DrawPointy;//绘图所使用的坐标点
int
PenWidth; //画笔宽度
U32PenMode;//画笔模式
U32PenColor; //画笔的颜色
int
DrawOrgx; //绘图的坐标原点位置
int
DrawOrgy;
int
DrawRangex; //绘图的区域范围
int
DrawRangey; U8bUpdataBuffer; //是否更新后台缓冲区
U32Fontcolor;//字符颜色}DC,*PDC;DC的初始化在绘图设备上下文(DC)中保存了每一个绘图对象的相关参数。在系统启动的时候,通过调用initOSDC()函数初始化绘图设备上下文(DC),为以后创建绘图设备上下文(DC)分配存储空间。DC的使用典型的绘图函数(a)voidinitOSDC();PDCCreateDC();voidDestoryDC(PDC
pdc);voidMoveTo(PDC
pdc,intx,inty);voidLineTo(PDC
pdc,intx,inty);voidDrawRectFrame(PDC
pdc,int
left,inttop,intright,intbottom);voidCircle(PDC
pdc,intx0,inty0,intr);典型的绘图函数(b)voidSetDrawOrg(PDC
pdc,int
x,inty,int*oldx,int*oldy)设置绘图设备上下文(DC)的原点典型的绘图函数(c)voidSetDrawRange(PDC
pdc,int
x,inty,int*oldx,int*oldy)设置绘图设备上下文(DC)的绘图范围x,y:设定的横向、纵向绘图的范围,如果x(或者y)为1,则表示x(或者y)方向的比例随着y(或者x)方向的范围按比例缩放。如果参数为-1,表示方向相反DC创建PDCpdc;pdc=CreateDC();DC设置举例PDCpdc;pdc=CreateDC();SetDrawOrg(pdc,170,50,&oldx,&oldy);SetDrawRange(pdc,800,-1,&oldxrange,&oldyrange);上面的程序代码创建一个绘图设备上下文(DC),将原点坐标设定在液晶屏设备坐标的(170,50),并把绘图的逻辑坐标的水平值设置成800,垂直范围按照液晶屏实际的横纵比例缩放。基于Unicode的字库什么是Unicode使用Unicode的优点字符的存储方式编写Unicode的程序Unicode字模的提取Unicode字库的显示及相关函数什么是UnicodeUnicode是统一编码的紧缩写法世界上常用的编码系统有数百种之多,但所有的这些编码系统,没有哪一个能有足够的字符,可以适用于多种语言文本由于编码不统一,这些编码系统之间经常相互冲突Unicode出现改变了这一切在Unicode的双字节版本中(UTF-16)使用的是16位编码方式,可提供65,000多个字符代码指针使用Unicode的优点使用Unicode避免了乱码的产生,使得国际间文本数据交换成为可能解决了多语言文本同平面共存的问题实现了软件的全球化,避免了软件产品在贯穿多个平台、语言和国家时的重建字符的存储方式
在图形操作系统中,字符(包括:中文、英文)通常有2种存储方式。一种方式存储的是字符的图形点阵另一种方式是存储汉字的矢量图形
在嵌入式处理中,因为处理器的性能和嵌入式系统资源还不如PC机,而且,嵌入式只是针对专一控制而应用的系统。基本上,没有必要使用矢量字库。编写Unicode的程序
Windows2000及其以后的系统版本,默认的字符处理方式是UnicodeWindows平台上,有大量丰富的字符资源Windows2000及其以后的系统版本中,提取Unicode字符点阵无疑成了最好的选择。Unicode字库分配
本系统中编码采用双字节版本的Unicode格式收集了ASCII字符(0x0000-0x00ff)256个特殊图形符号(0x2600-0x267f和0x2700-0x27bf)320个中文字符(0x4e00-0x9fff)20992个。Unicode字库相关函数
转换函数voidInt2Unicode(intnumber,U16str[]);intUnicode2Int(U16str[]);voidstrChar2Unicode(U16ch2[],constcharch1[]);输出函数voidTextOut(PDC
pdc,intx,inty,U16*ch,U8bunicode,U8fnt);voidTextOutRect(PDC
pdc,structRECT*prect,U16*ch,U8bunicode,U8fnt)
典型的控件 控件是可视化开发的基础。对于开发应用程序的用户来说,控件是一个独立的组件,它有着自己的显示方式,自己的动态内存管理模式,甚至有的控件还可以向系统发送自己的消息。用户不需要掌握控件的内部到底是如何工作的,用户只需要通过控件提供的API函数,改变控件相应的属性,从而改变控件的显示方式。控件的引入可以方便用户的开发,加速用户应用程序界面的编写速度。为运行在操作系统上的应用程序的界面提供了统一的标准,方便了使用。系统中的控件文本框控件列表框控件图片框控件按钮控件窗体控件的使用流程通用的系统控件对一个通用的系统控件,包含了如下的数据结构:
typedef
struct{ U32CtrlType; //控件的类型
U32CtrlID; //控件的ID
structRECT
ListCtrlRect;//控件的位置和大小
U32FontSize; //控件的字符大小
U32style; //控件的的边框风格
U8bVisible; //是否可见
}OS_Ctrl;本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介什么是文件系统(FileSystem)文件系统的定义
——处理文件的操作系统的部分称为文件系统.是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用文件系统的功能
——文件的构造、命名、存取、采用、保护和实现等。文件系统的存储媒质
——磁盘、软盘、光盘、FLASH盘等等文件系统的发展DOS1.0(1981)DOS3.0(1984)Win95(1995)Win95Osr2(1996)Win98(1998)Win3.1(1992)FAT12FAT16VFATFAT32FAT12/FAT16/FAT32的比较FAT12FAT16FAT32SizeofFATentry12bits16bits32bitsMaxnumofclusters4,08665,526268,435,456Clustersizeused0.5KB-4KB2KB-32KB4KB-32KB最大磁盘容量16,736,256
(16M)2,147,123,200
(2G)about2^41
(2T)基于FLASH的嵌入式文件系统FLASH读写的特点(1)必须以Page为单位进行读写;(2)写之前必须先擦除原有内容;(3)擦除操作必须对Block进行,即一次至少擦除一个Block的内容针对这种情况,将Flash的一个Page定为1个扇区,将其1个Block,32个扇区定为一个簇,这样,簇的容量刚好为512*32=16K,满足FAT16对簇大小的要求FLASH文件系统的要求(1)掉电安全:嵌入式系统的运行环境一般比较恶劣,但同时又要求有较高的可靠性。这就对FLASH文件系统进出了较高的要求,无论程序崩溃或系统掉电,都不能影响文件系统的一致性和完整性,文件系统的写入、垃圾回收等操作对系统异常中止都非常敏感,极易造成数据丢失和数据垃圾,在文件系统设计和选用时应考虑;(2)平均使用(wear-leveling):由于FLASH扇区的擦除次数有限制,要求能够均匀使用各扇区,以延长FLASH的使用寿命;(3)高效垃圾回收(garbagecollection):任何存储器在分配使用一段时间后,都会出现空区和碎片数据,为保证存储空间的使用率。方法是先移动扇区数据,再擦除整个扇区;(4)低空间消耗(lovoverhead):指文件系统管理结构在FLASH存储器上的空间消耗,该空间用于FS建立,而不能用于实际数据的存储,可以提高有用数据的存储空间FLASH文件系统的分类(1)集中管理文件系统特点:存储器空间的使用信息集中存放在存储器的某个地方,存储器的其它区域用于存放数据,数据必须依赖关键信息区才能被索引和使用缺点:需要大量缓存空间,当某扇区需要更新时,先将扇区数据备份到RAM中,再进行擦除操作,最后将修改后的备份写入FLASH,缺点是难以保证掉电安全,不能均匀使用存储器空间,特别是关键信息区,对文件系统的使用个性都会改写该区,导致FLASH快速损坏;FLASH文件系统的分类(2)线性文件系统概述:每个文件相关的信息都连续存放在存储器中,实现简单,读写快速,文件系统的关键信息分布存放;优点:安全性好;能保证存储器的平均使用,延长了FLASH的使用寿命;缺点:对文件操作效率低,不易实现添加、插入、剪切等操作;FLASH文件系统的分类(3)日志文件系统概述:日志结构的文件系统使用顺序的、只增的日志作为磁盘上唯一的组织文件系统数据的结构,文件的描述可以仍采用传统的索引组织方式。方法是在内存中将几次FS的修改汇集成一个大的日志条目(被称为段映像),然后动态分配磁盘空间并通过一次写操作写到磁盘上的一个连续的、固定大小的日志段(Segment)中。并定时或当系统发出同步写请求时保证日志同步写到磁盘上;优点:恢复快速。几种开源的FLASH文件系统TFS(TinyFileSystem)概述:TFS是由原Lucent公司的EdSutter开发的嵌入式系统引导平台Umon的一部分。TFS是一种线性结构的文件系统,由多个存放的文件块组成。一个文件块包含一个文件的所有信息。优点:TFS提供了掉电安全机制和垃圾回收机制,需要额外的辅助空间,用于垃圾回收时的文件缓存和过程状态,如果出现终止,系统根据辅助空间的信息进行文件系统的恢复;缺点:文件的插入、剪切和个性需要较大的运行开销,即使是很小的修改,也要求将整修文件重写几种开源的FLASH文件系统JFFS(JournalingFlashFileSystem)概述:由瑞典Axis通信公司开发的文件系统,主要针对NOR型Flash存储器设计,提供了掉电安全,平均使用等特性,是基于Linux,由于遵循GPL开放源代码,易实现移植;FAT16文件系统基本结构FAT文件系统由下面四部分组成保留区Reservedregion存放引导记录,BIOS信息等FAT区FAT信息列表
(12/16/32bits)根目录区目录信息列表
(32bytes)文件和目录区存放簇信息reservedFAT(p)FAT(b)RootdirFileanddirectory……保留区ReservedRegion引导记录基本信息
……引导代码BIOS参数块
(BPB)字节/扇区(512,1024,2048,4096)扇区/簇(1,2,4,8,16,32,64,128)根目录数总扇区值介质类型
(硬盘,软盘,FLASH)reservedFAT(p)FAT(b)RootdirFileanddirectory……FAT区通常有
FAT(P)(primary)和FAT(B)(backup)每一个簇都有一个对应的FAT目录Cluster2Cluster3Clustern-1Clustern……FAT数据区reservedFAT(p)FAT(b)RootdirFileanddirectory………FAT链表
(FAT16)……目录树FLASH的前两个BLOCKLBABlock/Page长度内容说明00/0512字节MBR=BPB+ExcutableCode+55AA(查看内容)1~20/1~0/21024字节FAT区(第一份FAT)3~40/3~0/41024字节FAT区备份(第二份FAT)5~39H0/5~1/3130K字节目录区(在BPB中调整目录项数,使其刚好占尽本簇)40H1/32512字节数据区(因目录区占尽一个簇,故数据区始于新簇首扇)建立文件系统COS-II本身不提供文件系统,针对嵌入式的应用,为适应大容量数据存储的需要,参考FAT16的格式,可以建立起一套简单的文件系统。文件系统简介此文件系统可以保存最多512个文件文件数据以簇为单位进行存储。为了便于管理和提高访问速度,文件系统中不提供存储子目录的管理。文件名的格式为8.3的格式文件名称均为大写文件系统的组织形式文件的访问读取文件的时候,首先在文件目录表中找到相应的文件所对应的首簇的号码,读取完成一个簇以后,如果文件的长度大于16KB(一个簇),就从文件分配表中查找到下一个簇的号码,然后继续读取,直到文件分配表中的下一个簇号码为FFFFH时为止文件系统实现过程文件相关的API函数文件的打开文件的读取文件的写入文件的关闭文件的列表文件结构体文件结构体的定义如下:typedef
struct{ U8Buffer[BLOCK_SIZE]; //文件缓冲区
U32fileblock; //文件当前的簇的位置
U32filemode; //打开文件的模式
U32filebufnum; //文件缓冲区中已经读取/写入的字节数
U32fileCurpos; //读写的当前位置
U32filesize; //文件的大小}FILE;可见,在FILE结构中包括了文件的缓冲区和其他的相关信息。OpenOSFile的工作的流程图OpenOSFile的工作的流程图
ReadOSFile函数的程序流程图
ReadOSFile函数的程序流程图
WriteOSFile函数的程序流程图WriteOSFile函数的程序流程图
CloseOSFile函数的程序流程图CloseOSFile函数的程序流程图
本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介系统消息在多任务操作系统中,各个任务之间,用户应用程序的各个任务之间以及用户应用程序和系统的各个任务之间的通常是通过消息来传递信息和同步的。消息与任务系统的消息函数voidinitOSMessage();POSMSGOSCreateMessage(U32Message,U32wparam,U32lparam);U8SendMessage(POSMSGpmsg);POSMSGWaitMessage(INT16Utimeout);voidDeleteMessage(POSMSG
pMsg);消息结构typedef
struct{ U32Message; U32WParam; U32LParam;}OSMSG,*POSMSG;其中,Message成员说明了系统的消息类型。WParam和LParam是系统消息传递的相应的参数。对于不同的消息有不同的意义。系统的消息循环在系统的主任务中可以使用如下的代码来实现消息循环:
POSMSGpMsg=0; //消息循环
for(;;){
pMsg=WaitMessage(0);//等待消息
switch(pMsg->Message){ caseXXX: //需要处理的消息
……//消息处理过程
break; }
DeleteMessage(pMsg);//删除消息,释放资源
}本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介外设及驱动程序外设驱动程序可以对系统提供访问外围设备的接口,把操作系统(软件)和外围设备(硬件)分离开来。当外围设备改变的时候,只需更换相应的驱动程序,不必修改操作系统的内核以及运行在操作系统中的软件。本小节中,将建立几种典型外设的驱动程序标准接口。串行口 串行口符合RS-232标准,通讯的最高速度可以达到115200bps。串行口的接口函数如下:voidUart_Init(int
Uartnum,int
mclk,intbaud);voidUart_Printf(char*fmt,...);charUart_Getch(char*Revdata,int
Uartnum,inttimeout);voidUart_SendByte(int
Uartnum,intdata);液晶显示驱动程序液晶屏是内部有控制电路的液晶模块分辨率320x240使用双缓冲机制显示缓冲区在系统的内存里开辟了一块内存作为液晶屏显示的后台缓冲区LCDBuffer,其定义如下:U32LCDBuffer[LCDHEIGHT][LCDWIDTH];其中,LCDBuffer为按双字映射存储的缓冲区(即:每四个字节表示一个点),写入的时候调用液晶屏的voidLCD_Refresh()函数,就可以把缓冲区的内容显示在液晶屏上。因为缓冲区是按双字存储的,所以LCDBuffer[y][x]对应的就是屏幕点(x,y)的像素值,每一个点用一个32位的整数表示,可以满足实现32位真彩色图片的显示,保证不同的液晶屏的兼容性。不同的液晶屏只需要更新LCD320.c和LCD320.h文件中的驱动程序即可液晶模块的控制液晶模块有两种工作模式:图形方式:在图形方式下,模块上的缓冲区映射的是液晶屏上显示的图形点阵文本方式:在文本模式下,模块上的缓冲区对应的是液晶屏上显示的文本字符,包括:英文字符和英文标点符号。液晶屏的操作主要包括:初始化、设置液晶屏的工作模式(文本或者图形)、更新显示、开启(或者关闭)背光。液晶驱动程序接口voidLCD_Init(void);voidLCD_printf(char*fmt,...);voidLCD_ChangeMode(U8mode);voidLCD_Refresh();voidLCDBkLight(U8isOpen);键盘驱动程序本控制器使用的是4x4的键盘(16键),在S3C44B0X的GPD端口上由程序扫描控制,无需外围芯片在操作系统中,键盘扫描是通过uCOS-II的专门的一个任务来控制的支持系统的组合按键(相当于Ctrl、Shift等),最多可以支持16键中所有的功能按键同时组合键盘驱动接口U32GetKey();低16位为键盘号码,高16位对应功能键扫描码(1有效)。此函数为死锁函数,调用以后,除非有按键按下,否则,函数不会返回。voidSetFunctionKey(U16Fnkey);设定功能键扫描码,1有效。可以提供组合按键。功能键不能单独返回。U32GetNoTaskKey();类似于GetKey(),但是,此函数不会释放此任务的控制权,除非有更高级的任务运行。键盘消息在系统中,键盘有专门的任务来管理。当有按键按下的时候就会相应键盘消息键盘的消息类型为OSM_KEY消息参数WParam表示系统的键盘按键号码LParam表示按键时同时按下的功能键等待键盘消息可以通过如下代码来等待并处理键盘消息POSMSGpMsg=0;//消息循环for(;;){
pMsg=WaitMessage(0);//等待消息
switch(pMsg->Message){ caseOSM_KEY:
onKey(pMsg->WParam, pMsg->LParam); break; }
DeleteMessage(pMsg);//删除消息,释放资源}USB接口USB接口是USB的设备(device)接口,需要和USB的主控(host)接口相连符合USB1.1标准接口系统通过USB供电当系统进入USB连接状态后,立刻时关闭了其他所有的正在执行的任务,以保证USB和主控设备之间的高速通讯USB连接举例下面一段代码给出了连接USB的例子:
EnterUsbConnect(); for(;;){ key=GetNoTaskKey(); if(((key+1)&0xffff)==16){
ExitUsbConnect(); return; } }其它实用API函数为了便于用户的应用开发,操作系统还提供了一些常用的API函数和数据结构。主要包括:双向链表的相关API函数系统的时间相关API函数系统的图形相关API函数双向链表API函数voidinitOSList();初始化链表,为链表分配动态空间voidAddListNode(PList
plist,void*pNode);在指定的位置为链表增加一个节点voidDeleteListNode(PList
pList);删除链表的指定节点PList
GetLastList(PList
pList);返回链表的最后一个节点系统的时间API函数voidInitRtc();voidGet_Rtc(PstructTimetime);U8Rtc_IsTimeChange(U32hichChange);voidSet_Rtc(PstructTimetime);voidRtc_Format(char*fmtchar,U16*outstr);图形相关API函数voidCopyRect(structRECT*prect1,structRECT*prect2);voidSetRect(structRECT*prect,intleft,inttop,intright,intbottom);voidInflateRect(structRECT*prect,int
cx,intcy);U8IsInRect(structRECT*prect,intx,inty);多任务uCOS-II操作系统上允许同时运行64个任务每一个任务都要有其独立的栈空间和唯一的任务优先级其中,有8个任务被系统的内核使用。另外还有,4个任务被操作系统使用。任务的资源下面的代码定义了一个New_Task任务所需要的资源:OS_STKNew_Stack[STACKSIZE]={0,}; //New_Task堆栈voidNew_Task(void*Id);//任务函数#defineNew_Task_Prio20//任务优先级任务的创建下面的代码用于创建New_Task任务:OSTaskCreate(New_Task,(void*)0,(OS_STK*)& New_Stack[STACKSIZE-1],
New_Task_Prio);
任务创建以后,就会处于就绪状态。系统在任务调度的时候,总是执行处于最高优先级的任务。任务的同步 在uCOS-II中有三种方法可以在任务之间传递信息,保证任务的同步:信号量邮箱消息队列信号量以信号量为例,讲解两个任务之间是如何同步的。创建信号量等待信号量发送信号量创建信号量下面的代码定义并创建了一个信号量:OS_EVENT*Rtc_Updata_Sem; ……Rtc_Updata_Sem=OSSemCreate(1);OSSemCreate的参数为1,表示信号量的计数值是1,即在同一个时间只能有一个资源被独占。等待信号量下面的代码用来在一个任务中等待一个信号量(比如:Rtc_Updata_Sem):INT8Uerr; ……OSSemPend(Rtc_Updata_Sem,0,&err);因为定义了Rtc_Updata_Sem中信号量的计数器为1,所以,一旦用OSSemPend获得了信号量的控制权,其他的任务就无法得到Rtc_Updata_Sem信号量的控制权了。发送信号量下面的代码用来在一个任务中发送一个信号量(比如:Rtc_Updata_Sem):OSSemPost(Rtc_Updata_Sem);使信号量的计数器的值加1,因为Rtc_Updata_Sem在创建的时候计数器的值为1,相当于释放了一个资源的占有权本节提要132546基于COS-II扩展RTOS图形用户接口设计外设及驱动文件系统的设计系统的消息嵌入式GUI简介GUI的概念GUI的定义
GraphicsUserInterface,是指计算机与其使用者之间的图形化对话接口。GUI的主要特征:
——Windows,采用窗口界面,每个窗口是用户或系统的一个工作区域。一个屏幕上可以有多个窗口。
——Icons,采用形象化的图标或图符,易于操作者理解与操作。
——Menu,采用菜单,可供用户选择的功能提示
——PointingDevices,指鼠标器、触摸屏等,便于用户直接对屏幕对象进行操作。嵌入式GUI的特点体积小功能强;图形算法简洁、快速,占用系统资源少可靠性高;模块结构,便于移植和定制嵌入式GUI的实现方法1)照需求开发满足自身特定需要的GUI系统;2)将GUI作为一个软件层从应用程序中剥离,GUI的支持逻辑由应用程序自己负责;3)设计一个支持大多数常见的GUI对象的应用编程接口库,使其具有与其他通用开发工具相类似的调用方法(如Win32)的GUI系统几种典型的嵌入式GUICompactX-WindowSystem:可扩展性好、可移植性好,代码尺寸大Microwindows
:开放源码的嵌入式GUI软件,可移植性好,图形功能出色。OpenGUI
:自由软件。汇编实现的内核,并利用MMX指令进行了优化,OpenGUI运行速度非常快。支持32位处理器,可以在MS-DOS,QNX和Linux下运行。主要用来在这些系统中开发图形应用程序和游戏Qt/Embedded:QT库开发商Trolltech
推出的面向嵌入式系统的QT版本。可移植性好,价格较贵。MiniGUI:自由软件,面向嵌入式系统或者实时系统的图形用户界面支持系统。它主要运行于Linux,还可以运行在任何一种具有POSIX线程支持的POSIX兼容系统上嵌入式GUICompactX-WindowSystem:可扩展性好、可移植性好,代码尺寸大Microwindows
:开放源码的嵌入式GUI软件,可移植性好,图形功能出色。OpenGUI
:自由软件。汇编实现的内核,并利用MMX指令进行了优化,OpenGUI运行速度非常快。支持32位处理器,可以在MS-DOS,QNX和Linux下运行。主要用来在这些系统中开发图形应用程序和游戏Qt/Embedded:QT库开发商Trolltech
推出的面向嵌入式系统的QT版本。可移植性好,价格较贵。Min
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 赣州职业技术学院《体育跆拳道》2023-2024学年第一学期期末试卷
- 赣南师范大学科技学院《安装工程造价软件应用》2023-2024学年第一学期期末试卷
- 《色彩的感染力》课件
- 甘肃中医药大学《特效短片制作》2023-2024学年第一学期期末试卷
- 《沙宣公关分析》课件
- 七年级语文上册第二单元体验亲情6散步高效教案新人教版
- 七年级道德与法治上册第四单元生命的思考第十课绽放生命之花第二框活出生命的精彩教案新人教版
- 三年级数学上册第5单元四则混合运算一5.3简单的三步混合运算课时练冀教版
- 《献给我的朋友》课件
- 绿色医院低碳运维促节能降耗课件
- 融资担保业务风险分类管理办法
- 数学分析知识点的总结
- 年会抽奖券可编辑模板
- 静电场知识点例题结合
- 道德寶章·白玉蟾
- GB∕T 41170.2-2021 造口辅助器具的皮肤保护用品 试验方法 第2部分:耐湿完整性和黏合强度
- 防雷装置检测质量管理手册
- 水上抛石护坡施工方案
- 燃气锅炉房和直燃机房防爆问题
- 物料提升机基础方案
- 840dsl常用参数
评论
0/150
提交评论