嵌入式系统学习课件C8说课讲解.ppt
《嵌入式系统学习课件C8说课讲解.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统学习课件C8说课讲解.ppt(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1嵌入式系统学习课件C82uCOS-IIuCOS-II的不足之处的不足之处l只有多任务调度的简单内核只有多任务调度的简单内核l内存管理过于简单,几乎没有动态内存管理功能内存管理过于简单,几乎没有动态内存管理功能l文件系统和图形界面需要外挂文件系统和图形界面需要外挂l对于设备驱动程序没有专门统一的接口对于设备驱动程序没有专门统一的接口3具体的扩展工作l建立文件系统;建立文件系统;l外设及驱动程序的实现;外设及驱动程序的实现;l基于基于UnicodeUnicode汉字库的实现方法;汉字库的实现方法;l基本绘图函数的实现;基本绘图函数的实现;l其它实用其它实用APIAPI函数;函数;4基于COS-I
2、I扩展RTOS的体系结构51系统外围设备的硬件部分l系统外围设备的硬件部分包括:液晶显示屏(系统外围设备的硬件部分包括:液晶显示屏(LCDLCD)、)、USBUSB通信模通信模块、键盘、海量块、键盘、海量FlashFlash存储器、系统的时钟和日历。外围设备的硬存储器、系统的时钟和日历。外围设备的硬件部分是保证系统实现指定任务的最底层的部件。件部分是保证系统实现指定任务的最底层的部件。2 2、驱动程序模块l驱动程序是连接底层的硬件和上层的驱动程序是连接底层的硬件和上层的APIAPI函数的纽带,有了驱动程函数的纽带,有了驱动程序模块,就可以把操作系统的序模块,就可以把操作系统的APIAPI函数和
3、底层的硬件分离开来。硬函数和底层的硬件分离开来。硬件的改变、删除或者添加,只需要随之改变、删除或者添加提供件的改变、删除或者添加,只需要随之改变、删除或者添加提供给操作系统的相应的驱动程序就可以了。而不会影响到给操作系统的相应的驱动程序就可以了。而不会影响到APIAPI函数的函数的功能,更不会影响到用户的应用程序。功能,更不会影响到用户的应用程序。63操作系统的API函数l在操作系统中提供标准的应用程序接口(在操作系统中提供标准的应用程序接口(APIAPI)函数,可以加速用)函数,可以加速用户应用程序的开发,统一应用程序的标准,同时也给操作系统版户应用程序的开发,统一应用程序的标准,同时也给操
4、作系统版本的升级带来了方便。在本的升级带来了方便。在APIAPI函数中,提供了大量的常用模块,可函数中,提供了大量的常用模块,可以大大简化用户应用程序的编写。以大大简化用户应用程序的编写。4实时操作系统的多任务管理l C/OS-C/OS-作为操作系统的内核,主要的任务就是完成多任务之间作为操作系统的内核,主要的任务就是完成多任务之间的调度和同步。的调度和同步。5系统的消息队列l这里所说的系统的消息队列是以这里所说的系统的消息队列是以 C/OS-C/OS-的消息队列派生出来的的消息队列派生出来的系统消息传递机制,用来实现系统的各个任务之间、用户应用程系统消息传递机制,用来实现系统的各个任务之间、
5、用户应用程序的各个任务之间以及用户应用程序和系统的各个任务之间的通序的各个任务之间以及用户应用程序和系统的各个任务之间的通信。信。76系统任务l系统任务主要包括液晶显示屏(系统任务主要包括液晶显示屏(LCDLCD)的刷新任务、系统键盘扫描)的刷新任务、系统键盘扫描任务。这两个任务是操作系统的基本任务,随着操作系统的启动任务。这两个任务是操作系统的基本任务,随着操作系统的启动而运行。而运行。7用户应用程序l用户的应用程序建立在系统的主任务(用户的应用程序建立在系统的主任务(Main_TaskMain_Task)基础之上。用)基础之上。用户应用程序主要通过调用系统的户应用程序主要通过调用系统的AP
6、IAPI函数对系统进行操作,完成用函数对系统进行操作,完成用户的要求。在用户的应用程序中也可以创建用户自己的任务。任户的要求。在用户的应用程序中也可以创建用户自己的任务。任务之间的协调主要依赖于系统的消息队列。务之间的协调主要依赖于系统的消息队列。8本节提要本节提要1 13 32 25 54 46 6基于基于 COS-IICOS-II扩展扩展RTOSRTOS图形用户接口设计图形用户接口设计外设及驱动外设及驱动文件系统的设计文件系统的设计系统的消息系统的消息嵌入式嵌入式GUI简介简介9图形用户接口函数 基于基于3232位嵌入式处理器的硬件平台,有着较高的运算位嵌入式处理器的硬件平台,有着较高的运
7、算速度和大容量的内存。为人机交互建立速度和大容量的内存。为人机交互建立GUIGUI无疑为最无疑为最首选的方式。本小节将建立针对常用的图形界面的应首选的方式。本小节将建立针对常用的图形界面的应用建立相应的用建立相应的APIAPI函数。主要包括:函数。主要包括:l基本绘图函数。基本绘图函数。l基于基于UnicodeUnicode的汉字字库的汉字字库l典型的控件典型的控件10绘图API函数l绘图是操作系统的图形界面的基础,本系统为绘图是操作系统的图形界面的基础,本系统为图形界面提供了丰富的绘图函数。图形界面提供了丰富的绘图函数。l在多任务操作系统中,绘图设备上下文(在多任务操作系统中,绘图设备上下文
8、(DCDC)是绘图的关键。绘图设备上下文(是绘图的关键。绘图设备上下文(DCDC)保存了)保存了每一个绘图对象的相关参数(比如:绘图画笔每一个绘图对象的相关参数(比如:绘图画笔的宽度、绘图的原点坐标等)。在多任务操作的宽度、绘图的原点坐标等)。在多任务操作系统中,通过绘图设备上下文(系统中,通过绘图设备上下文(DCDC)来绘图,)来绘图,可以保证在不同的任务绘图的参数是相互独立可以保证在不同的任务绘图的参数是相互独立的,不会互相影响。的,不会互相影响。11DC的定义typedef structint DrawPointx;int DrawPointy;/绘图所使用的坐标点绘图所使用的坐标点in
9、t PenWidth;/画笔宽度画笔宽度U32 PenMode;/画笔模式画笔模式U32 PenColor;/画笔的颜色画笔的颜色int DrawOrgx;/绘图的坐标原点位置绘图的坐标原点位置int DrawOrgy;int DrawRangex;/绘图的区域范围绘图的区域范围int DrawRangey;U8 bUpdataBuffer;/是否更新后台缓冲区是否更新后台缓冲区U32 Fontcolor;/字符颜色字符颜色DC,*PDC;12DC的初始化l在绘图设备上下文(在绘图设备上下文(DCDC)中保存了每一个绘图对)中保存了每一个绘图对象的相关参数。在系统启动的时候,通过调用象的相关参
10、数。在系统启动的时候,通过调用initOSDCinitOSDC()()函数初始化绘图设备上下文(函数初始化绘图设备上下文(DCDC),为以后创),为以后创建绘图设备上下文(建绘图设备上下文(DCDC)分配存储空间。)分配存储空间。13DC的使用14典型的绘图函数(a)lvoid initOSDC();void initOSDC();lPDC CreateDC();PDC CreateDC();lvoid DestoryDC(PDC pdc);void DestoryDC(PDC pdc);lvoid MoveTo(PDC pdc,int x,int y);void MoveTo(PDC pdc
11、,int x,int y);lvoid LineTo(PDC pdc,int x,int y);void LineTo(PDC pdc,int x,int y);lvoid DrawRectFrame(PDC pdc,int left,int void DrawRectFrame(PDC pdc,int left,int top,int right,int bottom);top,int right,int bottom);lvoid Circle(PDC pdc,int x0,int y0,int void Circle(PDC pdc,int x0,int y0,int r);r);15典
12、型的绘图函数(b)lvoid SetDrawOrg(PDC pdc,int x,int y,int*void SetDrawOrg(PDC pdc,int x,int y,int*oldx,int*oldy)oldx,int*oldy)l设置绘图设备上下文(设置绘图设备上下文(DCDC)的原点)的原点 16典型的绘图函数(c)lvoid SetDrawRange(PDC pdc,int x,int y,int*void SetDrawRange(PDC pdc,int x,int y,int*oldx,int*oldy)oldx,int*oldy)l设置绘图设备上下文(设置绘图设备上下文(DC
13、DC)的绘图范围)的绘图范围 lx,yx,y:设定的横向、纵向绘图的范围,如果:设定的横向、纵向绘图的范围,如果x x(或者(或者y y)为为1 1,则表示,则表示x x(或者(或者y y)方向的比例随着)方向的比例随着y y(或者(或者x x)方)方向的范围按比例缩放。如果参数为向的范围按比例缩放。如果参数为-1-1,表示方向相反,表示方向相反 17DC创建PDC pdc;pdc=CreateDC();18DC设置举例lPDC pdc;PDC pdc;lpdc=CreateDC();pdc=CreateDC();lSetDrawOrg(pdc,170,50,&oldx,&oldy);SetD
14、rawOrg(pdc,170,50,&oldx,&oldy);lSetDrawRange(pdc,800,-1,&oldxrangeSetDrawRange(pdc,800,-1,&oldxrange,&oldyrange);&oldyrange);l上面的程序代码创建一个绘图设备上下文(上面的程序代码创建一个绘图设备上下文(DCDC),将原),将原点坐标设定在液晶屏设备坐标的点坐标设定在液晶屏设备坐标的(170,50)(170,50),并把绘图的,并把绘图的逻辑坐标的水平值设置成逻辑坐标的水平值设置成800800,垂直范围按照液晶屏实,垂直范围按照液晶屏实际的横纵比例缩放。际的横纵比例缩放。
15、l l实验实验1 1 绘图的绘图的APIAPI函数函数19字符集与字体模块l矢量字体 基于矢量的的字体,称之为可缩放的字体,轮廓字体,或矢量字体。基于矢量的的字体,称之为可缩放的字体,轮廓字体,或矢量字体。由于这些字体在存储时亦只存储了其轮廓,因此,在不同的缩放大小下依然能由于这些字体在存储时亦只存储了其轮廓,因此,在不同的缩放大小下依然能保持美观而不会出现保持美观而不会出现“锯齿锯齿”。这点是很适合其完整地在。这点是很适合其完整地在WebWeb上传输。一般说上传输。一般说来,来,LogoLogo、线形艺术作品、图表、动画、抽象艺术作品等凡较容易定义颜色区、线形艺术作品、图表、动画、抽象艺术作
16、品等凡较容易定义颜色区域的图形,用矢量图都能产生很好的效果。域的图形,用矢量图都能产生很好的效果。l计算机是以处理数字为基础,如果要处理文字就需要规定一个编码系统用不同计算机是以处理数字为基础,如果要处理文字就需要规定一个编码系统用不同的数字来表示相应的字符。我们较为熟悉的有的数字来表示相应的字符。我们较为熟悉的有GBGB、GBKGBK、BIG5BIG5、ASCIIASCII等等。由等等。由于编码不统一,这些编码系统之间经常相互冲突。事实上,两种编码可能使用于编码不统一,这些编码系统之间经常相互冲突。事实上,两种编码可能使用相同的数字代表两个不同的字符;或者使用不同的数字代表相同的字符。相同的
17、数字代表两个不同的字符;或者使用不同的数字代表相同的字符。l在在UnicodeUnicode的双字节版本中(的双字节版本中(UTF-16UTF-16)使用的是)使用的是1616位编码方式,可提供位编码方式,可提供65,00065,000多多个字符代码指针。其编码容量可涵盖世界上几乎所有的语言,不仅包括拉丁语,个字符代码指针。其编码容量可涵盖世界上几乎所有的语言,不仅包括拉丁语,希腊语,斯拉夫语,希伯来语,阿拉伯语,亚美尼亚语,还包括中文,日文和希腊语,斯拉夫语,希伯来语,阿拉伯语,亚美尼亚语,还包括中文,日文和韩文这样的象形文字,以及平假名,片假名,孟加拉语,泰米尔语,泰国语,韩文这样的象形文
18、字,以及平假名,片假名,孟加拉语,泰米尔语,泰国语,老挝语等。目前还有大约老挝语等。目前还有大约80008000个代码指针未用,可供扩展。个代码指针未用,可供扩展。20基于Unicode的字库 l什么是什么是UnicodeUnicodel使用使用UnicodeUnicode的优点的优点 l字符的存储方式字符的存储方式l编写编写UnicodeUnicode的程序的程序 lUnicodeUnicode字模的提取字模的提取lUnicodeUnicode字库的显示及相关函数字库的显示及相关函数 21什么是UnicodeUnicode Unicode 是是 统一编码的紧缩写法统一编码的紧缩写法l世世界界
19、上上常常用用的的编编码码系系统统有有数数百百种种之之多多,但但所所有有的的这这些些编编码码系系统统,没没有有哪哪一一个个能能有有足足够够的的字字符符,可可以以适适用用于于多种语言文本多种语言文本l由于编码不统一,这些编码系统之间经常相互冲突由于编码不统一,这些编码系统之间经常相互冲突lUnicodeUnicode出现改变了这一切出现改变了这一切l在在UnicodeUnicode的的双双字字节节版版本本中中(UTF-16UTF-16)使使用用的的是是1616位位编编码方式,可提供码方式,可提供65,00065,000多个字符代码指针多个字符代码指针 22使用Unicode的优点 l使使用用Uni
20、codeUnicode避避免免了了乱乱码码的的产产生生,使使得得国国际际间间文文本本数数据交换成为可能据交换成为可能l解决了多语言文本同平面共存的问题解决了多语言文本同平面共存的问题l实实现现了了软软件件的的全全球球化化,避避免免了了软软件件产产品品在在贯贯穿穿多多个个平台、语言和国家时的重建平台、语言和国家时的重建 23字符的存储方式l在在图图形形操操作作系系统统中中,字字符符(包包括括:中中文文、英英文文)通通常常有有2 2种存储方式。种存储方式。l一种方式存储的是字符的图形点阵一种方式存储的是字符的图形点阵 l另一种方式是存储汉字的矢量图形另一种方式是存储汉字的矢量图形 l在在嵌嵌入入式
21、式处处理理中中,因因为为处处理理器器的的性性能能和和嵌嵌入入式式系系统统资资源源还还不不如如PCPC机机,而而且且,嵌嵌入入式式只只是是针针对对专专一一控控制制而而应应用用的的系统。基本上,没有必要使用矢量字库。系统。基本上,没有必要使用矢量字库。24Unicode字库分配 l本系统中编码采用双字节版本的本系统中编码采用双字节版本的UnicodeUnicode格式格式l收集了收集了ASCIIASCII字符(字符(0 x0000-0 x00ff0 x0000-0 x00ff)256256个个l特特殊殊图图形形符符号号(0 x2600-0 x267f0 x2600-0 x267f和和0 x2700
22、-0 x27bf0 x2700-0 x27bf)320320个个l中文字符(中文字符(0 x4e00-0 x9fff0 x4e00-0 x9fff)2099220992个。个。25Unicode字库相关函数 l转换函数转换函数lvoid Int2Unicode(int number,U16 str);lint Unicode2Int(U16 str);lvoid strChar2Unicode(U16 ch2,const char ch1);l输出函数输出函数lvoid TextOut(PDC pdc,int x,int y,U16*ch,U8 bunicode,U8 fnt);lvoid T
23、extOutRect(PDC pdc,structRECT*prect,U16*ch,U8 bunicode,U8 fnt)26典型的控件 控件是可视化开发的基础。对于开发应用程序的用户来说,控控件是可视化开发的基础。对于开发应用程序的用户来说,控件是一个独立的组件,它有着自己的显示方式,自己的动态内件是一个独立的组件,它有着自己的显示方式,自己的动态内存管理模式,甚至有的控件还可以向系统发送自己的消息。用存管理模式,甚至有的控件还可以向系统发送自己的消息。用户不需要掌握控件的内部到底是如何工作的,用户只需要通过户不需要掌握控件的内部到底是如何工作的,用户只需要通过控件提供的控件提供的APIA
24、PI函数,改变控件相应的属性,从而改变控件的函数,改变控件相应的属性,从而改变控件的显示方式。显示方式。l控件的引入可以方便用户的开发,加速用户应用程序界面控件的引入可以方便用户的开发,加速用户应用程序界面的编写速度。的编写速度。l为运行在操作系统上的应用程序的界面提供了统一的标准,为运行在操作系统上的应用程序的界面提供了统一的标准,方便了使用。方便了使用。27系统中的控件l文本框控件文本框控件l列表框控件列表框控件l图片框控件图片框控件l按钮控件按钮控件l窗体窗体28控件的使用流程29通用的系统控件 对一个通用的系统控件,包含了如下的数据结构:对一个通用的系统控件,包含了如下的数据结构:ty
25、pedef structU32 CtrlType;/控件的类型控件的类型U32 CtrlID;/控件的控件的IDstructRECT ListCtrlRect;/控件的位置和大小控件的位置和大小U32 FontSize;/控件的字符大小控件的字符大小U32 style;/控件的的边框风格控件的的边框风格U8 bVisible;/是否可见是否可见OS_Ctrl;30主要函数介绍主要函数介绍l列表框控件列表框控件lCreateTextCtrll定义定义:PTextCtrl CreateTextCtrl(U32 CtrlID,structRECT*prect,U32 FontSize,U32 sty
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 学习 课件 C8 讲解
限制150内