六、嵌入式系统软件结构设计_第1页
六、嵌入式系统软件结构设计_第2页
六、嵌入式系统软件结构设计_第3页
六、嵌入式系统软件结构设计_第4页
六、嵌入式系统软件结构设计_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

1、1嵌入式系统嵌入式系统第六讲第六讲 基于基于 C/OS-C/OS-的软件设计的软件设计2本节提要本节提要基于基于 COS-II扩展扩展RTOS图形用户接口设计图形用户接口设计外设及驱动外设及驱动文件系统的设计文件系统的设计系统的消息系统的消息嵌入式嵌入式GUI简介简介3基于COS-II扩展RTOS l将将 COS-IICOS-II移植到自己的硬件平台以后,接下来的工移植到自己的硬件平台以后,接下来的工作就是对操作系统本身的扩充。作就是对操作系统本身的扩充。l介绍如何对介绍如何对 COS-IICOS-II进行必要的扩展,建立一个简单进行必要的扩展,建立一个简单实用的实时操作系统(实用的实时操作系

2、统(RTOSRTOS) 4为什么要扩展uCOS-II COS-IICOS-II仅仅一个实时多任务的内核,移植了仅仅一个实时多任务的内核,移植了 COS-IICOS-II以后,离实际的应用还是有一段距离的。要想实现一个以后,离实际的应用还是有一段距离的。要想实现一个相对完整、实用的嵌入式的实时多任务操作系统(相对完整、实用的嵌入式的实时多任务操作系统(RTOSRTOS),还需要相当多的扩展性的工作。),还需要相当多的扩展性的工作。5具体的扩展工作l建立文件系统;建立文件系统;l外设及驱动程序的实现;外设及驱动程序的实现;l基于基于UnicodeUnicode汉字库的实现方法;汉字库的实现方法;l

3、基本绘图函数的实现;基本绘图函数的实现;l其它实用其它实用APIAPI函数;函数;6基于COS-II扩展RTOS的体系结构71系统外围设备的硬件部分l系统外围设备的硬件部分包括:液晶显示屏(系统外围设备的硬件部分包括:液晶显示屏(LCDLCD)、)、USBUSB通信模通信模块、键盘、海量块、键盘、海量FlashFlash存储器、系统的时钟和日历。外围设备的硬存储器、系统的时钟和日历。外围设备的硬件部分是保证系统实现指定任务的最底层的部件。件部分是保证系统实现指定任务的最底层的部件。2 2、驱动程序模块l驱动程序是连接底层的硬件和上层的驱动程序是连接底层的硬件和上层的APIAPI函数的纽带,有了

4、驱动程函数的纽带,有了驱动程序模块,就可以把操作系统的序模块,就可以把操作系统的APIAPI函数和底层的硬件分离开来。硬函数和底层的硬件分离开来。硬件的改变、删除或者添加,只需要随之改变、删除或者添加提供件的改变、删除或者添加,只需要随之改变、删除或者添加提供给操作系统的相应的驱动程序就可以了。而不会影响到给操作系统的相应的驱动程序就可以了。而不会影响到APIAPI函数的函数的功能,更不会影响到用户的应用程序。功能,更不会影响到用户的应用程序。83操作系统的API函数l在操作系统中提供标准的应用程序接口(在操作系统中提供标准的应用程序接口(APIAPI)函数,可以加速用)函数,可以加速用户应用

5、程序的开发,统一应用程序的标准,同时也给操作系统版户应用程序的开发,统一应用程序的标准,同时也给操作系统版本的升级带来了方便。在本的升级带来了方便。在APIAPI函数中,提供了大量的常用模块,可函数中,提供了大量的常用模块,可以大大简化用户应用程序的编写。以大大简化用户应用程序的编写。4实时操作系统的多任务管理l C/OS-C/OS-作为操作系统的内核,主要的任务就是完成多任务之间作为操作系统的内核,主要的任务就是完成多任务之间的调度和同步。的调度和同步。5系统的消息队列l这里所说的系统的消息队列是以这里所说的系统的消息队列是以 C/OS-C/OS-的消息队列派生出来的的消息队列派生出来的系统

6、消息传递机制,用来实现系统的各个任务之间、用户应用程系统消息传递机制,用来实现系统的各个任务之间、用户应用程序的各个任务之间以及用户应用程序和系统的各个任务之间的通序的各个任务之间以及用户应用程序和系统的各个任务之间的通信。信。96系统任务l系统任务主要包括液晶显示屏(系统任务主要包括液晶显示屏(LCDLCD)的刷新任务、系统键盘扫描)的刷新任务、系统键盘扫描任务。这两个任务是操作系统的基本任务,随着操作系统的启动任务。这两个任务是操作系统的基本任务,随着操作系统的启动而运行。而运行。7用户应用程序l用户的应用程序建立在系统的主任务(用户的应用程序建立在系统的主任务(Main_TaskMain

7、_Task)基础之上。用)基础之上。用户应用程序主要通过调用系统的户应用程序主要通过调用系统的APIAPI函数对系统进行操作,完成用函数对系统进行操作,完成用户的要求。在用户的应用程序中也可以创建用户自己的任务。任户的要求。在用户的应用程序中也可以创建用户自己的任务。任务之间的协调主要依赖于系统的消息队列。务之间的协调主要依赖于系统的消息队列。10用户应用程序的建立 l在嵌入式硬件平台的基础上,有了实时多任务操作系统来管理在嵌入式硬件平台的基础上,有了实时多任务操作系统来管理硬件资源、进行任务协调,在操作系统平台上使用操作系统所硬件资源、进行任务协调,在操作系统平台上使用操作系统所提供的提供的

8、GUIGUI(图形用户接口)及(图形用户接口)及APIAPI(应用程序接口)函数来编(应用程序接口)函数来编制自己相应的用户应用程序了。制自己相应的用户应用程序了。 11嵌入式系统上运行的应用程序的结构 l以以ARM7TDMIARM7TDMI结构的处理器为例,它不带有结构的处理器为例,它不带有MMUMMU(内存管(内存管理单元)。所以,操作系统和应用程序是编译在一起运理单元)。所以,操作系统和应用程序是编译在一起运行的。行的。 12系统的启动和运行过程 嵌入式控制器嵌入式控制器硬件初始化硬件初始化操作系统初始操作系统初始化化LCDLCD初始化初始化装载字库装载字库调用系统配置调用系统配置文件文

9、件创建任务创建任务初始化用户界初始化用户界面、时钟面、时钟启动多任务调启动多任务调度度主 任主 任务务用 户用 户程序程序消 息消 息处理处理任任务务1 1任任务务n n13本节提要本节提要基于基于 COS-IICOS-II扩展扩展RTOSRTOS图形用户接口设计图形用户接口设计外设及驱动外设及驱动文件系统的设计文件系统的设计系统的消息系统的消息嵌入式嵌入式GUI简介简介14图形用户接口函数 基于基于3232位嵌入式处理器的硬件平台,有着较高的运位嵌入式处理器的硬件平台,有着较高的运算速度和大容量的内存。为人机交互建立算速度和大容量的内存。为人机交互建立GUIGUI无疑为无疑为最首选的方式。本

10、小节将建立针对常用的图形界面的最首选的方式。本小节将建立针对常用的图形界面的应用建立相应的应用建立相应的APIAPI函数。主要包括:函数。主要包括:l基本绘图函数。基本绘图函数。 l基于基于UnicodeUnicode的汉字字库的汉字字库l典型的控件典型的控件15绘图API函数l绘图是操作系统的图形界面的基础,本系统为绘图是操作系统的图形界面的基础,本系统为图形界面提供了丰富的绘图函数。图形界面提供了丰富的绘图函数。l在多任务操作系统中,绘图设备上下文(在多任务操作系统中,绘图设备上下文(DCDC)是绘图的关键。绘图设备上下文(是绘图的关键。绘图设备上下文(DCDC)保存了)保存了每一个绘图对

11、象的相关参数(比如:绘图画笔每一个绘图对象的相关参数(比如:绘图画笔的宽度、绘图的原点坐标等)。在多任务操作的宽度、绘图的原点坐标等)。在多任务操作系统中,通过绘图设备上下文(系统中,通过绘图设备上下文(DCDC)来绘图,)来绘图,可以保证在不同的任务绘图的参数是相互独立可以保证在不同的任务绘图的参数是相互独立的,不会互相影响。的,不会互相影响。 16DC的定义typedef structint DrawPointx;int DrawPointy; /绘图所使用的坐标点绘图所使用的坐标点int PenWidth; /画笔宽度画笔宽度U32 PenMode; /画笔模式画笔模式U32 PenCo

12、lor;/画笔的颜色画笔的颜色int DrawOrgx;/绘图的坐标原点位置绘图的坐标原点位置int DrawOrgy;int DrawRangex;/绘图的区域范围绘图的区域范围int DrawRangey;U8 bUpdataBuffer;/是否更新后台缓冲区是否更新后台缓冲区U32 Fontcolor; /字符颜色字符颜色DC,*PDC;17DC的初始化l在绘图设备上下文(在绘图设备上下文(DCDC)中保存了每一个绘图对)中保存了每一个绘图对象的相关参数。在系统启动的时候,通过调用象的相关参数。在系统启动的时候,通过调用initOSDC()initOSDC()函数初始化绘图设备上下文(函

13、数初始化绘图设备上下文(DCDC),),为以后创建绘图设备上下文(为以后创建绘图设备上下文(DCDC)分配存储空间)分配存储空间。 18DC的使用19典型的绘图函数(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, int x, int y); lvoid LineTo(PDC pdc, i

14、nt 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); 20典型的绘图函数(b)lvoid

15、void SetDrawOrg(PDCSetDrawOrg(PDC pdcpdc, , intint x,intx,int y, y, intint* * oldxoldx, , intint * *oldyoldy) ) l设置绘图设备上下文(设置绘图设备上下文(DCDC)的原点)的原点 21典型的绘图函数(c)lvoid void SetDrawRange(PDCSetDrawRange(PDC pdcpdc, , intint x,intx,int y, y, intint* * oldxoldx, , intint * *oldyoldy) ) l设置绘图设备上下文(设置绘图设备上下文

16、(DCDC)的绘图范围)的绘图范围 lx,yx,y:设定的横向、纵向绘图的范围,如果:设定的横向、纵向绘图的范围,如果x x(或者(或者y y)为为1 1,则表示,则表示x x(或者(或者y y)方向的比例随着)方向的比例随着y y(或者(或者x x)方)方向的范围按比例缩放。如果参数为向的范围按比例缩放。如果参数为-1-1,表示方向相反,表示方向相反 22DC创建PDC pdc;pdc=CreateDC();23DC设置举例lPDC PDC pdcpdc; ;lpdcpdc= =CreateDCCreateDC();();lSetDrawOrg(pdc,170,50,&oldx,&oldy)

17、;SetDrawOrg(pdc,170,50,&oldx,&oldy);lSetDrawRange(pdc,800,-1,&oldxrange, &oldyrange);SetDrawRange(pdc,800,-1,&oldxrange, &oldyrange);l上面的程序代码创建一个绘图设备上下文(上面的程序代码创建一个绘图设备上下文(DCDC),将原),将原点坐标设定在液晶屏设备坐标的点坐标设定在液晶屏设备坐标的(170,50)(170,50),并把绘图的,并把绘图的逻辑坐标的水平值设置成逻辑坐标的水平值设置成800800,垂直范围按照液晶屏实,垂直范围按照液晶屏实际的横纵比例缩放。际

18、的横纵比例缩放。 24基于Unicode的字库 l什么是什么是UnicodeUnicodel使用使用UnicodeUnicode的优点的优点 l字符的存储方式字符的存储方式l编写编写UnicodeUnicode的程序的程序 lUnicodeUnicode字模的提取字模的提取lUnicodeUnicode字库的显示及相关函数字库的显示及相关函数 25什么是UnicodeUnicode Unicode 是是 统一编码的紧缩写法统一编码的紧缩写法l世界上常用的编码系统有数百种之多,但所有的这些世界上常用的编码系统有数百种之多,但所有的这些编码系统,没有哪一个能有足够的字符,可以适用于编码系统,没有哪

19、一个能有足够的字符,可以适用于多种语言文本多种语言文本l由于编码不统一,这些编码系统之间经常相互冲突由于编码不统一,这些编码系统之间经常相互冲突lUnicodeUnicode出现改变了这一切出现改变了这一切l在在UnicodeUnicode的双字节版本中(的双字节版本中(UTF-16UTF-16)使用的是)使用的是1616位编位编码方式,可提供码方式,可提供65,00065,000多个字符代码指针多个字符代码指针 26使用Unicode的优点 l使用使用UnicodeUnicode避免了乱码的产生,使得国际间文本数避免了乱码的产生,使得国际间文本数据交换成为可能据交换成为可能l解决了多语言文本

20、同平面共存的问题解决了多语言文本同平面共存的问题l实现了软件的全球化,避免了软件产品在贯穿多个实现了软件的全球化,避免了软件产品在贯穿多个平台、语言和国家时的重建平台、语言和国家时的重建 27字符的存储方式l在图形操作系统中,字符(包括:中文、英文)通常有在图形操作系统中,字符(包括:中文、英文)通常有2 2种存储方式。种存储方式。 l一种方式存储的是字符的图形点阵一种方式存储的是字符的图形点阵 l另一种方式是存储汉字的矢量图形另一种方式是存储汉字的矢量图形 l在嵌入式处理中,因为处理器的性能和嵌入式系统资源在嵌入式处理中,因为处理器的性能和嵌入式系统资源还不如还不如PCPC机,而且,嵌入式只

21、是针对专一控制而应用的机,而且,嵌入式只是针对专一控制而应用的系统。基本上,没有必要使用矢量字库。系统。基本上,没有必要使用矢量字库。28编写Unicode的程序 lWindows2000Windows2000及其以后的系统版本,默认的字符处及其以后的系统版本,默认的字符处理方式是理方式是UnicodeUnicodelWindowsWindows平台上,有大量丰富的字符资源平台上,有大量丰富的字符资源lWindows2000Windows2000及其以后的系统版本中,提取及其以后的系统版本中,提取UnicodeUnicode字符点阵无疑成了最好的选择。字符点阵无疑成了最好的选择。29Unico

22、de字库分配 l本系统中编码采用双字节版本的本系统中编码采用双字节版本的UnicodeUnicode格式格式l收集了收集了ASCIIASCII字符(字符(0 x0000-0 x00ff0 x0000-0 x00ff)256256个个l特殊图形符号(特殊图形符号(0 x2600-0 x267f0 x2600-0 x267f和和0 x2700-0 x27bf0 x2700-0 x27bf)320320个个l中文字符(中文字符(0 x4e00-0 x9fff0 x4e00-0 x9fff)2099220992个。个。 30Unicode字库相关函数 l转换函数转换函数lvoid Int2Unicod

23、e(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 TextOutRect(PDC pdc, structRECT* prect, U16* ch, U8 bunicode, U8 fnt) 31典型的控件 控件是可视化开发的基础。对于开发应用程序的用户来说控件是可视化开发的基础

24、。对于开发应用程序的用户来说,控件是一个独立的组件,它有着自己的显示方式,自己,控件是一个独立的组件,它有着自己的显示方式,自己的动态内存管理模式,甚至有的控件还可以向系统发送自的动态内存管理模式,甚至有的控件还可以向系统发送自己的消息。用户不需要掌握控件的内部到底是如何工作的己的消息。用户不需要掌握控件的内部到底是如何工作的,用户只需要通过控件提供的,用户只需要通过控件提供的APIAPI函数,改变控件相应的属函数,改变控件相应的属性,从而改变控件的显示方式。性,从而改变控件的显示方式。l控件的引入可以方便用户的开发,加速用户应用程序界控件的引入可以方便用户的开发,加速用户应用程序界面的编写速

25、度。面的编写速度。l为运行在操作系统上的应用程序的界面提供了统一的标为运行在操作系统上的应用程序的界面提供了统一的标准,方便了使用。准,方便了使用。 32系统中的控件l文本框控件文本框控件l列表框控件列表框控件l图片框控件图片框控件l按钮控件按钮控件l窗体窗体33控件的使用流程34通用的系统控件 对一个通用的系统控件,包含了如下的数据结构:对一个通用的系统控件,包含了如下的数据结构:typedef structU32 CtrlType; /控件的类型控件的类型U32 CtrlID;/控件的控件的IDstructRECT ListCtrlRect;/控件的位置和大小控件的位置和大小U32 Fon

26、tSize;/控件的字符大小控件的字符大小U32 style;/控件的的边框风格控件的的边框风格U8 bVisible;/是否可见是否可见OS_Ctrl;35本节提要本节提要基于基于 COS-IICOS-II扩展扩展RTOSRTOS图形用户接口设计图形用户接口设计外设及驱动外设及驱动文件系统的设计文件系统的设计系统的消息系统的消息嵌入式嵌入式GUI简介简介36什么是文件系统(File System)文件系统的定义 处理文件的操作系统的部分称为文件系统处理文件的操作系统的部分称为文件系统. .是操作系统中统一管理是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠信息

27、资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用的共享和保护手段,并且方便用户使用文件系统的功能 文件的构造、命名、存取、采用、保护和实现等。文件的构造、命名、存取、采用、保护和实现等。文件系统的存储媒质 磁盘、软盘、光盘、磁盘、软盘、光盘、FLASHFLASH盘等等盘等等37文件系统的发展DOS 1.0 (1981)DOS 3.0 (1984)Win 95 (1995)Win 95 Osr2 (1996)Win 98 (1998)Win 3.1 (1992)FAT12FAT16VFATFAT3238FAT12/FAT16/FAT32的比较FAT12F

28、AT12FAT16FAT16FAT32FAT32Size of FAT Size of FAT entryentry12 bits12 bits16 bits16 bits32 bits32 bitsMax num of Max num of clustersclusters4,0864,08665,52665,526268,435,456268,435,456Cluster size Cluster size usedused0.5 KB - 4 KB0.5 KB - 4 KB2 KB - 32 KB2 KB - 32 KB4 KB - 32 KB4 KB - 32 KB最大磁盘容量最大磁盘

29、容量16,736,25616,736,256(16M)(16M)2,147,123,2002,147,123,200(2G)(2G)about 241about 241(2T)(2T)39基于FLASH的嵌入式文件系统40FLASH读写的特点(1 1)必须以)必须以PagePage为单位进行读写;为单位进行读写;(2 2)写之前必须先擦除原有内容;)写之前必须先擦除原有内容;(3 3)擦除操作必须对)擦除操作必须对BlockBlock进行,即一次至少擦除一个进行,即一次至少擦除一个BlockBlock的内容的内容 针对这种情况,将针对这种情况,将FlashFlash的一个的一个PagePage

30、定为定为1 1个扇区,将其个扇区,将其1 1个个BlockBlock,3232个扇区定为一个簇,这样,簇的容量刚好为个扇区定为一个簇,这样,簇的容量刚好为512512323216K16K,满,满足足FAT16FAT16对簇大小的要求对簇大小的要求 41FLASH文件系统的要求(1 1)掉电安全:掉电安全:嵌入式系统的运行环境一般比较恶劣,但同时又要求有较高的嵌入式系统的运行环境一般比较恶劣,但同时又要求有较高的可靠性。这就对可靠性。这就对FLASHFLASH文件系统进出了较高的要求,无论程序崩溃或系统掉电文件系统进出了较高的要求,无论程序崩溃或系统掉电,都不能影响文件系统的一致性和完整性,文件

31、系统的写入、垃圾回收等操作,都不能影响文件系统的一致性和完整性,文件系统的写入、垃圾回收等操作对系统异常中止都非常敏感,极易造成数据丢失和数据垃圾,在文件系统设计对系统异常中止都非常敏感,极易造成数据丢失和数据垃圾,在文件系统设计和选用时应考虑;和选用时应考虑;(2 2)平均使用(平均使用(wear-leveling)wear-leveling):由于由于FLASHFLASH扇区的擦除次数有限制,要求能够扇区的擦除次数有限制,要求能够均匀使用各扇区,以延长均匀使用各扇区,以延长FLASHFLASH的使用寿命;的使用寿命;(3 3)高效垃圾回收(高效垃圾回收(garbage collection

32、)garbage collection):任何存储器在分配使用一段时间后任何存储器在分配使用一段时间后,都会出现空区和碎片数据,为保证存储空间的使用率。方法是先移动扇区数,都会出现空区和碎片数据,为保证存储空间的使用率。方法是先移动扇区数据,再擦除整个扇区;据,再擦除整个扇区;(4 4)低空间消耗(低空间消耗(lov overhead)lov overhead):指文件系统管理结构在指文件系统管理结构在FLASHFLASH存储器上的空存储器上的空间消耗,该空间用于间消耗,该空间用于FSFS建立,而不能用于实际数据的存储,可以提高有用数据建立,而不能用于实际数据的存储,可以提高有用数据的存储空间

33、的存储空间42FLASH文件系统的分类(1 1)集中管理文件系统)集中管理文件系统特点:存储器空间的使用信息集中存放在存储器的某个地方,存特点:存储器空间的使用信息集中存放在存储器的某个地方,存 储器的其它区域用于存放数据,数据必须依赖关键信息区才能储器的其它区域用于存放数据,数据必须依赖关键信息区才能被索引和使用被索引和使用缺点:需要大量缓存空间,当某扇区需要更新时,先将扇区数据缺点:需要大量缓存空间,当某扇区需要更新时,先将扇区数据备份到备份到RAMRAM中,再进行擦除操作,最后将修改后的备份写入中,再进行擦除操作,最后将修改后的备份写入FLASHFLASH,缺点是难以保证掉电安全,不能均

34、匀使用存储器空间,缺点是难以保证掉电安全,不能均匀使用存储器空间,特别是关键信息区,对文件系统的使用个性都会改写该区,导特别是关键信息区,对文件系统的使用个性都会改写该区,导致致FLASHFLASH快速损坏;快速损坏;43FLASH文件系统的分类(2 2)线性文件系统)线性文件系统概述:每个文件相关的信息都连续存放在存储器中,实现简单,读概述:每个文件相关的信息都连续存放在存储器中,实现简单,读写快速,文件系统的关键信息分布存放;写快速,文件系统的关键信息分布存放;优点:安全性好;能保证存储器的平均使用,延长了优点:安全性好;能保证存储器的平均使用,延长了FLASHFLASH的使用寿的使用寿命

35、;命;缺点:对文件操作效率低,不易实现添加、插入、剪切等操作;缺点:对文件操作效率低,不易实现添加、插入、剪切等操作;44FLASH文件系统的分类(3 3)日志文件系统)日志文件系统概述:日志结构的文件系统使用顺序的、只增的日志作为磁盘上唯概述:日志结构的文件系统使用顺序的、只增的日志作为磁盘上唯一的组织文件系统数据的结构一的组织文件系统数据的结构 , ,文件的描述可以仍采用传统的索文件的描述可以仍采用传统的索引组织方式。方法是在内存中将几次引组织方式。方法是在内存中将几次 FSFS的修改汇集成一个大的日的修改汇集成一个大的日志条目志条目( (被称为段映像被称为段映像 ) ,) ,然后动态分配

36、磁盘空间并通过一次写操然后动态分配磁盘空间并通过一次写操作写到磁盘上的一个连续的、固定大小的日志段作写到磁盘上的一个连续的、固定大小的日志段 (Segment)(Segment)中。中。并定时或当系统发出同步写请求时保证日志同步写到磁盘上;并定时或当系统发出同步写请求时保证日志同步写到磁盘上;优点:恢复快速。优点:恢复快速。45几种开源的FLASH文件系统46几种开源的FLASH文件系统47FAT16文件系统基本结构lFAT 文件系统由下面四部分组成文件系统由下面四部分组成l保留区保留区 Reserved regionl存放引导记录,存放引导记录,BIOS信息等信息等lFAT 区区lFAT信息

37、列表信息列表 (12/16/32 bits)l根目录区根目录区l目录信息列表目录信息列表 (32 bytes)l文件和目录区文件和目录区l存放簇信息存放簇信息reservedFAT(p)FAT(b)Root dirFile and directory 48保留区 Reserved Regionl引引导记录导记录l基本信息基本信息 l引导代码引导代码lBIOS参数块参数块 (BPB)l字节字节/扇区扇区 (512,1024,2048,4096)l扇区扇区/簇簇 (1,2,4,8,16,32,64,128)l根目录数根目录数l总扇区值总扇区值l介质类型介质类型 (硬盘硬盘,软盘,软盘,FLASH)

38、reservedFAT(p)FAT(b)Root dirFile and directory 49FAT 区l通常有通常有 FAT(P)(primary)和和FAT(B)(backup)l每一每一个个簇都有一簇都有一个对应个对应的的FAT目目录录Cluster 2Cluster 3Cluster n-1Cluster nFAT数数据据区区reservedFAT(p)FAT(b)Root dirFile and directory 50lFAT 链表链表 (FAT16)目目录树录树51FLASH的前两个BLOCKLBABlockPage长度内容说明00/0512字节MBRBPBExcutable

39、 Code+55AA(查看内容)120/10/21024字节FAT区(第一份FAT)340/30/41024字节FAT区备份(第二份FAT)539H0/51/3130K字节目录区(在BPB中调整目录项数,使其刚好占尽本簇)40H1/32512字节数据区(因目录区占尽一个簇,故数据区始于新簇首扇)52建立文件系统 COS-IICOS-II本身不提供文件系统,针对嵌入式的应用本身不提供文件系统,针对嵌入式的应用,为适应大容量数据存储的需要,参考,为适应大容量数据存储的需要,参考FAT16FAT16的格式,的格式,可以建立起一套简单的文件系统。可以建立起一套简单的文件系统。53文件系统简介 l此文件

40、系统可以保存最多此文件系统可以保存最多512512个文件个文件l文件数据以簇为单位进行存储。文件数据以簇为单位进行存储。l为了便于管理和提高访问速度,文件系统中不提供存为了便于管理和提高访问速度,文件系统中不提供存储子目录的管理。储子目录的管理。 l文件名的格式为文件名的格式为8.38.3的格式的格式l文件名称均为大写文件名称均为大写54文件系统的组织形式 55文件的访问l读取文件的时候,首先在文件目录表中找到相应的文件读取文件的时候,首先在文件目录表中找到相应的文件所对应的首簇的号码,读取完成一个簇以后,如果文件所对应的首簇的号码,读取完成一个簇以后,如果文件的长度大于的长度大于16KB16

41、KB(一个簇),就从文件分配表中查找到(一个簇),就从文件分配表中查找到下一个簇的号码,然后继续读取,直到文件分配表中的下一个簇的号码,然后继续读取,直到文件分配表中的下一个簇号码为下一个簇号码为FFFFHFFFFH时为止时为止 56文件系统实现过程 文件相关的文件相关的APIAPI函数函数l文件的打开文件的打开l文件的读取文件的读取l文件的写入文件的写入l文件的关闭文件的关闭l文件的列表文件的列表57文件结构体 文件结构体的定义如下:文件结构体的定义如下:typedef structU8 BufferBLOCK_SIZE;/文件缓冲区文件缓冲区U32 fileblock;/文件当前的簇的位置

42、文件当前的簇的位置U32 filemode;/打开文件的模式打开文件的模式U32 filebufnum;/文件缓冲区中已经读取文件缓冲区中已经读取/写入的字节数写入的字节数U32 fileCurpos;/读写的当前位置读写的当前位置U32 filesize;/文件的大小文件的大小FILE;可见,在可见,在FILE结构中包括了文件的缓冲区和其他的相关信息。结构中包括了文件的缓冲区和其他的相关信息。58OpenOSFile的工作的流程图lOpenOSFile的工作的流程图的工作的流程图 59ReadOSFile函数的程序流程图l ReadOSFile函数的程序流程图函数的程序流程图 60Write

43、OSFile函数的程序流程图lWriteOSFile函数的程序流程图函数的程序流程图 61CloseOSFile函数的程序流程图lCloseOSFile函数的程序流程图函数的程序流程图 CloseOSFile函数开始是否是以写入方式打开的文把文件缓冲区写入当前簇释放掉文件结构(File)的内存函数结束62本节提要本节提要基于基于 COS-IICOS-II扩展扩展RTOSRTOS图形用户接口设计图形用户接口设计外设及驱动外设及驱动文件系统的设计文件系统的设计系统的消息系统的消息嵌入式嵌入式GUI简介简介63系统消息在多任务操作系统中,各个任务之间,用户应用程在多任务操作系统中,各个任务之间,用户

44、应用程序的各个任务之间以及用户应用程序和系统的各个任序的各个任务之间以及用户应用程序和系统的各个任务之间的通常是通过消息来传递信息和同步的。务之间的通常是通过消息来传递信息和同步的。 64消息与任务等待消息任务开始是否是用户关心的消息删除消息判断消息类型执行相应的函数用户任务1用户任务1的消息队列发送消息操作系统任务1操作系统任务2操作系统任务n操作系统发送消息65系统的消息函数 lvoid initOSMessage();lPOSMSG OSCreateMessage(U32 Message, U32 wparam, U32 lparam);lU8 SendMessage(POSMSG pm

45、sg);lPOSMSG WaitMessage(INT16U timeout);lvoid DeleteMessage(POSMSG pMsg);66消息结构typedef struct U32 Message;U32 WParam;U32 LParam;OSMSG, *POSMSG;其中,其中,Message成员说明了系统的消息类型。成员说明了系统的消息类型。WParam和和LParam是系统消息传递的相应的参数。对于不同的消息有不同是系统消息传递的相应的参数。对于不同的消息有不同的意义。的意义。67系统的消息循环在系统的主任务中可以使用如下的代码来实现消息循环:在系统的主任务中可以使用如下

46、的代码来实现消息循环:POSMSG pMsg=0;/消息循环消息循环for(;)pMsg=WaitMessage(0); /等待消息等待消息switch(pMsg-Message)case XXX:/需要处理的消息需要处理的消息/消息处理过程消息处理过程break;DeleteMessage(pMsg);/删除消息删除消息,释放资源释放资源68本节提要本节提要基于基于 COS-IICOS-II扩展扩展RTOSRTOS图形用户接口设计图形用户接口设计外设及驱动外设及驱动文件系统的设计文件系统的设计系统的消息系统的消息嵌入式嵌入式GUI简介简介69外设及驱动程序l外设驱动程序可以对系统提供访问外围

47、设备的接口,外设驱动程序可以对系统提供访问外围设备的接口,把操作系统(软件)和外围设备(硬件)分离开来。把操作系统(软件)和外围设备(硬件)分离开来。l当外围设备改变的时候,只需更换相应的驱动程序,当外围设备改变的时候,只需更换相应的驱动程序,不必修改操作系统的内核以及运行在操作系统中的软不必修改操作系统的内核以及运行在操作系统中的软件。件。l本小节中,将建立几种典型外设的驱动程序标准接口本小节中,将建立几种典型外设的驱动程序标准接口。 70串行口串行口符合串行口符合RS-232标准,通讯的最高速度可以达到标准,通讯的最高速度可以达到115200bps。串行口的接口函数如下:。串行口的接口函数

48、如下: lvoid Uart_Init(int Uartnum, int mclk,int baud);lvoid Uart_Printf(char *fmt,.);lchar Uart_Getch(char* Revdata, int Uartnum, int timeout);lvoid Uart_SendByte(int Uartnum, int data);71液晶显示驱动程序l液晶屏是内部有控制电路的液晶模块液晶屏是内部有控制电路的液晶模块 l分辨率分辨率320 x240l使用双缓冲机制使用双缓冲机制72显示缓冲区l在系统的内存里开辟了一块内存作为液晶屏显示的后台缓冲区在系统的内存里

49、开辟了一块内存作为液晶屏显示的后台缓冲区LCDBufferLCDBuffer,其定义如下:,其定义如下:lU32 U32 LCDBufferLCDHEIGHTLCDWIDTHLCDBufferLCDHEIGHTLCDWIDTH;l其中,其中,LCDBufferLCDBuffer为按双字映射存储的缓冲区(即:每四个字节表为按双字映射存储的缓冲区(即:每四个字节表示一个点),写入的时候调用液晶屏的示一个点),写入的时候调用液晶屏的void void LCD_RefreshLCD_Refresh()()函数函数,就可以把缓冲区的内容显示在液晶屏上。,就可以把缓冲区的内容显示在液晶屏上。l因为缓冲区是

50、按双字存储的,所以因为缓冲区是按双字存储的,所以LCDBufferyxLCDBufferyx 对应的就是屏对应的就是屏幕点幕点( (x,yx,y) )的像素值,每一个点用一个的像素值,每一个点用一个3232位的整数表示,可以满足位的整数表示,可以满足实现实现3232位真彩色图片的显示,保证不同的液晶屏的兼容性。不同的位真彩色图片的显示,保证不同的液晶屏的兼容性。不同的液晶屏只需要更新液晶屏只需要更新LCD320.cLCD320.c和和LCD320.hLCD320.h文件中的驱动程序即可文件中的驱动程序即可73液晶模块的控制l液晶模块有两种工作模式:液晶模块有两种工作模式:l图形方式:在图形方式

51、下,模块上的缓冲区映射的是液晶图形方式:在图形方式下,模块上的缓冲区映射的是液晶屏上显示的图形点阵屏上显示的图形点阵l文本方式:在文本模式下,模块上的缓冲区对应的是液晶文本方式:在文本模式下,模块上的缓冲区对应的是液晶屏上显示的文本字符,包括:英文字符和英文标点符号。屏上显示的文本字符,包括:英文字符和英文标点符号。l液晶屏的操作主要包括:初始化、设置液晶屏的工作模式(文液晶屏的操作主要包括:初始化、设置液晶屏的工作模式(文本或者图形)、更新显示、开启(或者关闭)背光。本或者图形)、更新显示、开启(或者关闭)背光。 74液晶驱动程序接口 lvoid LCD_Init(void);lvoid L

52、CD_printf(char *fmt,.);lvoid LCD_ChangeMode(U8 mode);lvoid LCD_Refresh();lvoid LCDBkLight(U8 isOpen);75键盘驱动程序l本控制器使用的是本控制器使用的是4x4的键盘(的键盘(16键),在键),在S3C44B0X的的GPD端端口上由程序扫描控制,无需外围芯片口上由程序扫描控制,无需外围芯片l在操作系统中,键盘扫描是通过在操作系统中,键盘扫描是通过uCOS-II的专门的一个任务来控的专门的一个任务来控制的制的l支持系统的组合按键(相当于支持系统的组合按键(相当于Ctrl、Shift等),最多可以支持

53、等),最多可以支持16键中所有的功能按键同时组合键中所有的功能按键同时组合76键盘驱动接口lU32 U32 GetKeyGetKey();();低低1616位为键盘号码,高位为键盘号码,高1616位对应功能键扫描码(位对应功能键扫描码(1 1有有效)。此函数为死锁函数,调用以后,除非有按键按下,效)。此函数为死锁函数,调用以后,除非有按键按下,否则,函数不会返回。否则,函数不会返回。 lvoid SetFunctionKey(U16 void SetFunctionKey(U16 FnkeyFnkey););设定功能键扫描码,设定功能键扫描码,1 1有效。可以提供组合按键有效。可以提供组合按键

54、 。功能键不能单独返回。功能键不能单独返回。lU32 U32 GetNoTaskKeyGetNoTaskKey();();类似于类似于GetKeyGetKey()(),但是,此函数不会释放此任务的,但是,此函数不会释放此任务的控制权,除非有更高级的任务运行。控制权,除非有更高级的任务运行。 77键盘消息 在系统中,键盘有专门的任务来管理。当有按键按下的时候就会在系统中,键盘有专门的任务来管理。当有按键按下的时候就会相应键盘消息相应键盘消息l键盘的消息类型为键盘的消息类型为OSM_KEYOSM_KEYl消息参数消息参数WParamWParam表示系统的键盘按键号码表示系统的键盘按键号码lLPar

55、amLParam表示按键时同时按下的功能键表示按键时同时按下的功能键78等待键盘消息可以通过如下代码来等待并处理键盘消息可以通过如下代码来等待并处理键盘消息POSMSG pMsg=0;/消息循环消息循环for(;)pMsg=WaitMessage(0); /等待消息等待消息switch(pMsg-Message)case OSM_KEY:onKey(pMsg-WParam, pMsg-LParam);break;DeleteMessage(pMsg);/删除消息删除消息,释放资源释放资源79USB接口 lUSBUSB接口是接口是USBUSB的设备(的设备(devicedevice)接口,需要和

56、)接口,需要和USBUSB的主控(的主控(hosthost)接口相连)接口相连l符合符合USB1.1USB1.1标准接口标准接口l系统通过系统通过USBUSB供电供电l当系统进入当系统进入USBUSB连接状态后,立刻时关闭了其他所有的正在执行连接状态后,立刻时关闭了其他所有的正在执行的任务,以保证的任务,以保证USBUSB和主控设备之间的高速通讯和主控设备之间的高速通讯80USB连接举例下面一段代码给出了连接下面一段代码给出了连接USB的例子:的例子:EnterUsbConnect();for(;)key=GetNoTaskKey();if(key+1)&0 xffff)=16)ExitUsb

57、Connect();return;81其它实用API函数 为了便于用户的应用开发,操作系统还提供了一些常用的为了便于用户的应用开发,操作系统还提供了一些常用的APIAPI函数和数据结构。主要包括:函数和数据结构。主要包括: l双向链表的相关双向链表的相关APIAPI函数函数l系统的时间相关系统的时间相关APIAPI函数函数l系统的图形相关系统的图形相关APIAPI函数函数82双向链表API函数 lvoid void initOSListinitOSList();();初始化链表,为链表分配动态空间初始化链表,为链表分配动态空间lvoid void AddListNode(PListAddLis

58、tNode(PList plistplist, void, void* * pNodepNode););在指定的位置为链表增加一个节点在指定的位置为链表增加一个节点lvoid void DeleteListNode(PListDeleteListNode(PList pListpList););删除链表的指定节点删除链表的指定节点lPListPList GetLastList(PListGetLastList(PList pListpList););返回链表的最后一个节点返回链表的最后一个节点83系统的时间API函数 lvoid InitRtc();lvoid Get_Rtc(PstructT

59、ime time);lU8 Rtc_IsTimeChange(U32 hichChange);lvoid Set_Rtc(PstructTime time);lvoid Rtc_Format(char* fmtchar, U16* outstr);84图形相关API函数lvoid CopyRect(structRECT* prect1, structRECT* prect2);lvoid SetRect(structRECT* prect, int left, int top, int right, int bottom);lvoid InflateRect(structRECT* prect

60、, int cx,int cy);lU8 IsInRect(structRECT *prect, int x, int y);85多任务luCOSuCOS-II-II操作系统上允许同时运行操作系统上允许同时运行6464个任务个任务l每一个任务都要有其独立的栈空间和唯一的任务优先级每一个任务都要有其独立的栈空间和唯一的任务优先级l其中,有其中,有8 8个任务被系统的内核使用。另外还有,个任务被系统的内核使用。另外还有,4 4个任务被操作系个任务被操作系统使用。统使用。86任务的资源下面的代码定义了一个下面的代码定义了一个New_TaskNew_Task任务所需要的资源:任务所需要的资源:OS_S

温馨提示

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

评论

0/150

提交评论