
基于uTenux的fatfs文件系统移植本科毕业论文设计.doc
34页本科毕业论文(设计) 题目: 基于uTenux操作系统的 FatFs文件系统移植 学院: 数学与计算机科学学院 完成日期: 2013 年 6 月 2 日基于uTenux操作系统的 FatFs文件系统移植摘要:随着嵌入式技术的发展,尤其是ARM技术的不断更新,推出了cortex系列芯片,使得嵌入式设备的功能日益壮大,逐渐由单片机的时代过渡到微控制器的时代,对数据的访问量有了显著提高,这就要求数据操作层次清晰、透明度提高、可维护性、接口的标准化、移植性、灵活的操作和数据存储的可靠性等都提出了越来越高的要求,所以有必要引入文件系统来完成数据存储和管理的功能,为用户提供按名存取数据的接口,从而可以避免由程序开发人员直接访问内存所带来的不安全性本论文基于uTenux操作系统移植FatFS文件系统,详细论述了文件系统的实现原理,通过移植使得FatFS能在uTenux操作系统上运行实现文件和目录创建、打开、读取、写入、关闭等功能关键字:微控制器;uTenux;FatFS;ARM目录1 绪论 11.1 实时操作系统简介 11.1.1 实时操作系统的概念 11.1.2 常见的实时微控制器操作系统及其对比 11.2 嵌入式文件系统简介 21.2.1 文件系统概述 21.2.2 嵌入式文件系统一般体系结构 31.2.3 文件系统概述 41.3 嵌入式文件系统的必要性 52 uTenux实时操作系统 63 FatFS文件系统的移植 73.1 FAT协议介绍 73.1.1 FAT协议概述 73.1.2 FAT 保留区 83.1.3 FAT表区 103.1.4 FAT目录区 103.1.5 FAT数据区 113.2 FatFS文件系统的配置 113.3 FatFS文件系统结构分析 143.3.1 FatFS模块结构 143.3.2 FatFS定义的结构体 153.4 SD卡接口 173.4.1 SD协议 173.4.2 SD命令 183.5 FatFS文件系统的移植 193.5.1 开发环境uT/Stdio 193.5.2 构建移植环境 203.5.3 初始化 213.5.4 读写函数 234 移植结果的测试 245 总结与展望 26参考文献 28致谢 291 绪论1.1 实时操作系统简介1.1.1 实时操作系统的概念实时操作系统(Real-time Operation System,RTOS):系统能够及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致的运行的嵌入式操作系统。
在工业控制、航空航天、实时检测等流程控制要求非常精确的领域,必须要在指定的时间内做出指定的响应,这时就需要实时操作系统来控制我们常常说的嵌入式操作系统都是嵌入式实时操作系统,比如uTenux、uC/OS-II1.1.2 常见的实时微控制器操作系统及其对比1. uTenux微控制器操作系统uTenux是一款优秀的开源免费的实时微控制器操作系统,是由大连悠龙软件科技有限公司开发与维护Tenux是由T-Engine Linux 的缩写构成,Tenux具有(a)T-Engine的开源高实时性内核T-Kernel为内核;(b)Linux上丰富的开源中间件为中间件;(c)Eclipse+GNU开源开发工具为基础工具;(d)打造适合中国电子产品市场的开源嵌入式实时操作系统及方便的集成开发环境uTenux适用于微控制器(Cortex M/ARM 7,ROM:大于64K),它的内核是uT-Kernel,具有丰富紧凑的中间件,比如FATFS、LWIP、FLTK适用产品:小型物联网控制终端,比如机器人、智能仪表、小型数控机床、PLC、相机等它的特点有:(1) 所有源码公开、完全免费(2) 占有日本60%市场的成熟实时微内核 (3) 支持函数和软中断两种方式(4) 抢占式实时多任务操作系统(5) 不需要MMU,占用ROM/RAM少(6) 可以支持所有32位ARM7/9和Cortex M系列的微控制器(7) 可配置任意多个任务、任务的优先级最多255个2. uCOS微控制器操作系统uC/OS II (Micro Control Operation System Two)是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。
为了提供最好的移植性能,uC/OS II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU (包括DSP)uC/OS II可以简单的视为一个多任务调度器,在这个任务调度器之上完善并添加了和多任务操作系统相关的系统服务,如信号量、邮箱等其主要特点有公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化内核属于抢占式,最多可以管理60个任务从1992年开始,由于高度可靠性、鲁棒性和安全性,uC/OS II已经广泛使用在从照相机到航空电子产品的各种应用中3. uTenux和ucos的对比(1) uTenux有固定和可变尺寸内存池管理;ucos只有固定尺寸内存池2) uTenux的邮箱支持消息队列和任务等待队列,因此发送多个消息都可以;ucos的邮箱只能发送一条消息,很简单3) uTenux中有专门定义中断处理程序的系统调用-tk_def_int,很方便,而ucos中就没有4) uTenux有Trace、Hook等调试功能,而ucosii没有5) uTenux的任务堆栈等需要内存的地方,可以由系统自动分配也可以开发人员手工分配;但ucos只能手工分配。
6) uTenux的任务、信号量等系统对象采用ID方式实现,用户看不到内部的数据结构,对于安全性比较好,使用也方便;而ucos是用户定义每个系统对象的变量7) uTenux的任务间通信机制比ucos多了好几种,比如集合点端口等,而且每个通信机制都支持任务队列和消息队列8) uTenux V1.5的易用性没有ucos的强,幸好uTenux已经意识到自己的问题,向ucos的易用性学习,在模仿中超越对手9) uTenux 终身开源免费,无论是学习、商用、修改再发布,而ucos只有学习时是开源免费的,商用必须付费综上所述,学习uTenux的意义大于ucos1.2 嵌入式文件系统简介1.2.1 文件系统概述文件系统是操作系统的重要组成部分,用于控制对数据、文件及设备的存储[2]它提供对文件和目录的分层组织形式、数据缓冲以及对文件的存储权限的控制文件系统必须提供必要的用来创建、删除文件、读文件和写文件等相应的系统调用文件的存储通过目录完成,所以对目录的操作是文件系统功能的一部分,,文件系统应具有以下功能:⑴提供对文件和目录的分层组织形式;⑵建立与删除文件的能力;⑶文件的动态增长和数据保护硬盘的出现推动了针对桌面操作系统的文件系统的发展,同样,嵌入式存储设备特别是flash的出现,也推动了嵌入式文件系统的发展。
1.2.2 嵌入式文件系统一般体系结构在嵌入式文件系统中,嵌入式系统可以针对特殊的目的定制,特别是随着ASOS(为应用定制的嵌入式操作系统)的发展,对嵌入式操作系统的系统功能完整性和可伸缩性提出了更高的要求所以不得不采取一种灵活的系统体系结构,对于操作系统来说,文件系统是一个独立的子包含的整体,可以灵活的加载和卸载,这一切操作对操作系统内核的功能没有任何影响嵌入式文件系统系统体系结构从上到下一般有3层,如图1.1所示图1.1 嵌入式操作系统体系结构最上一层是文件系统的核心,使文件系统实现的核心算法,提供了用户可见的所有API函数,以供用户操作数据,这一层是文件系统功能的集合第二层是高速缓冲管理,高速缓冲区的大小直接关系到文件系统的处理效率,高效的缓冲区处理算法能大幅提高数据的处理效率;同时它为文件系统提供了与硬件无关的接口,为文件系统的层次性提供了基础最下面一层是设备驱动程序,涉及到具体的硬件设备驱动程序的另一个重要任务就是提供统一设备驱动接口文件系统和操作系统内核的关系主要体现在三方面:实时时钟、信号量和中断管理用时钟实现外设任务的等待延时;用信号量实现外设的同步和互斥;用中断管理机制管理外设的中断处理程序。
1.2.3 文件系统概述目前,嵌入式文件系统解决方案比较多,由于嵌入式设备的多样性,相应文件系统的实现也有针对各种设备的,如只读存储器、可读存储器、Flash存储器等嵌入式文件系统也是要针对嵌入式操作系统的1. FatFSFatFS是一个开源免费通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统FatFs 的编写遵循ANSI C,因此不依赖于硬件平台它可以嵌入到便宜的微控制器中,如8051、PIC、AVR、SH、Z80、H8、ARM等等它是window兼容的FAT文件系统,平台依赖性小,易于移植,代码和工作区占用非常小,有多种配置选项通过配置FatFS可以使得FatFS占用的RAM达到44字节,代码空间的占用可以小到2K-4K,在这样小的空间中它还能支持FAT32,这是以文件的写功能的限制为代价的 FatFS是标准FAT文件系统的小型嵌入式文件系统,它是一个自由软件,可以用于教育、研究、商业在使用过程中不用担心被限制用户可以修改,重新发布以个人的身份但是必须在源代码中包含这个版权申明文件分配表FAT(File Allocation Table)用来跟踪硬盘上每个文件的数据库,而FAT表存储关于簇的信息。
FAT表示microsoft在FAT文件系统中用于磁盘数据(文件)索引和定位引进的一种链式结构在FAT文件系统中,文件的存储依照FAT表制定的簇链式数据结构来进行同时,FAT文件系统将组织数据时使用的目录也抽象为文件,以简化对数据的管理FAT分区格式是microsoft最早支持的分区格式,依据FAT表中的每个簇链的所占位数分为FAT12、FAT16、FAT32三种形式,但其基本存储方式是相似的如图1.2所示图1.2 FatFs模块结构2. uC/FSuC/FS是uCOS的文件系统,它是由Micrium公司新开发的一个产品,主要应用在使用uCOS内核的嵌入式系统中uC/FS是一个用于能提供基础访问功能的FAT格式的文件系统,是一个高效率的库,为高速、多功能及内存使用进行优化它用ANSI C编写,由不同的层次结构组成,包括API层、文件系统层、逻辑区块层、设备驱动和硬件层总之,在上述的嵌入式文件系统中,FatFS和uC/FS都用于小容量闪存设备,功能都比较齐全但是uC/FS是属于拥有知识产权的技术,是商业产品,而FatFS则完全是开源免费的,用户可以随时下载所有全代码,更改和再发布随着NAND FAlsh作为嵌入式系统中大容量存储介质的普及应用,FatFS文件系统作为开源代码的项目,得到芯片产商,项目开发人员的一致好评。
所以在本项目中选择FatFS作为目标文件系统1.3 嵌入式文件系统的必要性嵌入式系统过去主要用于工业控制领域,对效率的比较高,对于数据处理不够重视,引入文件系统不但没有必要而且会降低效率,所以很多嵌入式系统应用都没有加载操作系统随着嵌入式处理器性能的不断升级,嵌入式系统的功能不断加强,用户的需求也和功能复杂度的增加,许多嵌入式系统都面临着处理大量数据的。
