您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 八嵌入式系统软件结构设计.
1嵌入式系统设计与实例开发——基于32位微处理器与实时操作系统第八讲基于C/OS-Ⅱ的软件设计北京航空航天大学机器人研究所王田苗魏洪兴2uCOS-II的不足之处只有多任务调度的简单内核内存管理过于简单,几乎没有动态内存管理功能文件系统和图形界面需要外挂对于设备驱动程序没有专门统一的接口3对COS-II进行必要的扩展要想实现一个相对完整、实用的嵌入式操作系统,还需要相当多的扩展性的工作。如:建立了FAT兼容的文件系统外设及驱动程序的实现基于Unicode的汉字库基本绘图函数的实现其它实用API函数4基于COS-II扩展RTOS的体系结构LCDUSB键盘海量存储器硬件LCD240.hUSB.hKeyboard16.hFlash.h时钟日历Rtc.h驱动程序drv.h基于uCOS-II的RTOS内核消息队列信号量邮箱API函数绘图函数Display.h文件管理函数File.h文件读写函数OSFile.h后台缓冲区任务调度模块双向链表函数List.h动态内存管理系统消息队列OSMessage.hLCD刷新键盘扫描用户任务1主任务用户任务2用户任务n系统任务信号量系统消息用户应用程序系统控件函数Control.h任务之间的通讯用户界面51.系统外围设备的硬件部分系统外围设备的硬件部分包括:液晶显示屏(LCD)、USB通信模块、键盘、海量Flash存储器、系统的时钟和日历。外围设备的硬件部分是保证系统实现指定任务的最底层的部件。2、驱动程序模块驱动程序是连接底层的硬件和上层的API函数的纽带,有了驱动程序模块,就可以把操作系统的API函数和底层的硬件分离开来。硬件的改变、删除或者添加,只需要随之改变、删除或者添加提供给操作系统的相应的驱动程序就可以了。而不会影响到API函数的功能,更不会影响到用户的应用程序。63.操作系统的API函数在操作系统中提供标准的应用程序接口(API)函数,可以加速用户应用程序的开发,统一应用程序的标准,同时也给操作系统版本的升级带来了方便。在API函数中,提供了大量的常用模块,可以大大简化用户应用程序的编写。4.实时操作系统的多任务管理C/OS-Ⅱ作为操作系统的内核,主要的任务就是完成多任务之间的调度和同步。5.系统的消息队列这里所说的系统的消息队列是以C/OS-Ⅱ的消息队列派生出来的系统消息传递机制,用来实现系统的各个任务之间、用户应用程序的各个任务之间以及用户应用程序和系统的各个任务之间的通信。76.系统任务系统任务主要包括液晶显示屏(LCD)的刷新任务、系统键盘扫描任务。这两个任务是操作系统的基本任务,随着操作系统的启动而运行。7.用户应用程序用户的应用程序建立在系统的主任务(Main_Task)基础之上。用户应用程序主要通过调用系统的API函数对系统进行操作,完成用户的要求。在用户的应用程序中也可以创建用户自己的任务。任务之间的协调主要依赖于系统的消息队列。8嵌入式文件系统9什么是文件系统(FileSystem)文件系统的定义——处理文件的操作系统的部分称为文件系统.是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用文件系统的功能——文件的构造、命名、存取、保护等。文件系统的存储媒质——磁盘(软盘、硬盘)、光盘、FLASH(盘)、RAM、ROM、网络甚至设备等10基于NANDFLASH的嵌入式文件系统11FLASH读写的特点(1)必须以Page为单位进行读写;(2)写之前必须先擦除原有内容;(3)擦除操作必须对Block进行,即一次至少擦除一个Block的内容针对这种情况,将Flash的一个Page定为1个扇区,将其1个Block,32个扇区定为一个簇,这样,簇的容量刚好为512*32=16K,满足FAT16对簇大小的要求12FLASH文件系统的要求(1)掉电安全:嵌入式系统的运行环境一般比较恶劣,但同时又要求有较高的可靠性。这就对FLASH文件系统进出了较高的要求,无论程序崩溃或系统掉电,都不能影响文件系统的一致性和完整性,文件系统的写入、垃圾回收等操作对系统异常中止都非常敏感,极易造成数据丢失和数据垃圾,在文件系统设计和选用时应考虑;(2)平均使用(wear-leveling):由于FLASH扇区的擦除次数有限制,要求能够均匀使用各扇区,以延长FLASH的使用寿命;(3)高效垃圾回收(garbagecollection):任何存储器在分配使用一段时间后,都会出现空区和碎片数据,为保证存储空间的使用率。方法是先移动扇区数据,再擦除整个扇区;(4)低空间消耗(lovoverhead):指文件系统管理结构在FLASH存储器上的空间消耗,该空间用于FS建立,而不能用于实际数据的存储,可以提高有用数据的存储空间13FLASH文件系统的分类(1)集中管理文件系统特点:存储器空间的使用信息集中存放在存储器的某个地方,存储器的其它区域用于存放数据,数据必须依赖关键信息区才能被索引和使用缺点:需要大量缓存空间,当某扇区需要更新时,先将扇区数据备份到RAM中,再进行擦除操作,最后将修改后的备份写入FLASH,难以保证掉电安全,不能均匀使用存储器空间,特别是关键信息区,对文件系统的使用都会改写该区,导致FLASH快速损坏;14FLASH文件系统的分类(2)线性文件系统概述:每个文件相关的信息都连续存放在存储器中,实现简单,读写快速,文件系统的关键信息分布存放;优点:安全性好;能保证存储器的平均使用,延长了FLASH的使用寿命;缺点:对文件操作效率低,不易实现添加、插入、剪切等操作;15FLASH文件系统的分类(3)日志文件系统概述:日志结构的文件系统使用顺序的、只增的日志作为磁盘上唯一的组织文件系统数据的结构,文件的描述可以仍采用传统的索引组织方式。方法是在内存中将几次FS的修改汇集成一个大的日志条目(被称为段映像),然后动态分配磁盘空间并通过一次写操作写到磁盘上的一个连续的、固定大小的日志段(Segment)中。并定时或当系统发出同步写请求时保证日志同步写到磁盘上;优点:恢复快速——不会产生丢失的簇、也不会因为掉电而破坏文件系统。16几种开源的文件系统TFS(TinyFileSystem)概述:TFS是由原Lucent公司的EdSutter开发的嵌入式系统引导平台Umon的一部分。TFS是一种线性结构的文件系统,由多个存放的文件块组成。一个文件块包含一个文件的所有信息。优点:TFS提供了掉电安全机制和垃圾回收机制。需要额外的辅助空间,用于垃圾回收时的文件缓存和过程状态,如果出现终止,系统根据辅助空间的信息进行文件系统的恢复缺点:文件的插入、剪切和个性需要较大的运行开销,即使是很小的修改,也要求将整个文件重写17jffs/jffs2文件系统的优缺点JFFS(JournalingFlashFileSystem)概述:由瑞典Axis通信公司开发的文件系统,主要针对NOR型Flash存储器设计,提供了掉电安全,平均使用等特性,是基于Linux,由于遵循GPL开放源代码,易实现移植;日志文件系统提供了更好的崩溃、掉电安全保护jffs2支持对flash的均匀磨损在扇区级别上执行闪存擦除/写/读操作功能较好文件系统接近满时,JFFS2会大大放慢运行速度——垃圾收集18Nand上yaffs文件系统的优势专门为Nandflash设计的日志文件系统jffs/jffs2不适合大容量的Nandflashjffs的日志通过jffs_node建立在RAM中,占用RAM空间:对于128MB的Nand大概需要4MB的空间来维护节点启动的时候需要扫描日志节点,不适合大容量的NandflashFAT系统没有日志19FAT文件系统的发展DOS1.0(1981)DOS3.0(1984)Win95(1995)Win95Osr2(1996)Win98(1998)Win3.1(1992)FAT12FAT16VFATFAT3220FAT12/FAT16/FAT32的比较FAT12FAT16FAT32SizeofFATentry12bits16bits32bitsMaxnumofclusters4,08665,526268,435,456Clustersizeused0.5KB-4KB2KB-32KB4KB-32KB最大磁盘容量16,736,256(16M)2,147,123,200(2G)about2^41(2T)21FAT16文件系统基本结构FAT文件系统由下面四部分组成保留区Reservedregion存放引导记录,BIOS信息等FAT区FAT信息列表(12/16/32bits)根目录区目录信息列表(32bytes)文件和目录区存放簇信息reservedFAT(p)FAT(b)RootdirFileanddirectory……22保留区ReservedRegion引导记录基本信息……引导代码BIOS参数块(BPB)字节/扇区(512,1024,2048,4096)扇区/簇(1,2,4,8,16,32,64,128)根目录数总扇区值介质类型(硬盘,软盘,FLASH)reservedFAT(p)FAT(b)RootdirFileanddirectory……23FAT区通常有FAT(P)(primary)和FAT(B)(backup)每一个簇都有一个对应的FAT目录Cluster2Cluster3Clustern-1Clustern……FAT数据区reservedFAT(p)FAT(b)RootdirFileanddirectory………24FAT链表(FAT16)……目录树25典型FLASH文件系统的结构系统纪录(SR,SystemRecord)文件分配表(FAT,FileAllocationTable)文件登记表(FRT,FileRegisterTable)数据区域(DataArea)(1)系统记录(SR,SystemRecord)存放媒质信息和最重要的文件系统信息。媒质信息诸如Flash存储器的类型、容量,划分成多少个区块,每区块包含多少个页面等。文件系统信息包括版本信息、保留区块的数目和位置、文件分配表和文件登记表所在的位置和大小、数据区域的位置和大小等。(2)文件分配表(FAT,FileAllocationTable)存放着Flash存储器上所有区块的占用与空闲情况以及每个文件的存储连接结构。采用FAT16文件格式26(3)文件登记表(FRT,FileRegisterTable)存放着Flash文件系统中每一个文件的文件代号、文件长度、文件属性以及该文件的存储链在文件分配表中的入口。(4)数据区域(DataArea)用于存放文件的数据内容。本Flash文件系统中,数据分配的最小单位是Flash存储器的一个基本擦除单元,即一个物理区块(Block)。FLASH文件系统的结构27文件系统的实现—FILE结构体typedefstruct{U8Buffer[BLOCK_SIZE];//文件缓冲区U32fileblock;//文件当前的簇的位置U32filemode;//打开文件的模式U32filebufnum;//文件缓冲区中已经读取/写入的字节数U32fileCurpos;//读写的当前位置U32filesize;//文件的大小}FILE;28与FLASH存储器的接口函数块擦除unsignedcharErase_Cluster(unsignedintcluster)页写入intWritePage(unsignedintblock,unsignedintpage,unsignedchar*pPage)页读出voidReadPage(unsignedintblock,unsignedintpage,unsignedchar*pPage)29OpenOSFile的工作的流程图OpenOSFile函数开始返回失败找到指定的文件名定位文件的首簇的位置为文件的打开分配缓冲区是读取文件模式读取
本文标题:八嵌入式系统软件结构设计.
链接地址:https://www.777doc.com/doc-2655878 .html