标签:引用 管理员 报警 ttl 深度 故障 vxworks 解压 min
先声明一下关于版权的问题,NTFS是Microsoft公司的知识产权产品!我本人是本着学习与研究的态度对其进行分析的,以便于更好的理解数据存储技术。所查阅的所有资料,也都是网上甚至是MSDN自己公开的东西,没有逆向成分在里面,如果Microsoft公司,或者其他我引用资料的原作者发现我照搬了研究成果,请及时私信给我,我将立即删除相关信息,谢谢!
版权交代完了,接下来我们开始研究技术:
NTFS (New Technology File System),是 WindowsNT 环境的文件系统。新技术文件系统是Windows NT家族(如,Windows 2000、Windows XP、Windows Vista、Windows 7和 windows 8.1)等的限制级专用的文件系统(操作系统所在的盘符的文件系统必须格式化为NTFS的文件系统,4096簇环境下)。NTFS取代了老式的FAT文件系统。
NTFS对FAT和HPFS作了若干改进,例如,支持元数据,并且使用了高级数据结构,以便于改善性能、可靠性和磁盘空间利用率,并提供了若干附加扩展功能……
有关于NTFS的优点很多,比如更大的单一分区,更大的文件大小,单一目录的更多文件数之类的。但如果只有这些,微软的天才们是没有必要单独研发一种文件系统的,FAT64就够了,如果64不够,也许还会出现FAT128,FAT256,NTFS的优点主要体现在可靠、安全和高效几个方面;
如果对以上几点不甚了解,那么我简单说几点个人看法吧:第一个是压缩解压缩问题,对于我们的深度嵌入式系统来讲,还是不压缩的好,虽然是NTFS自带的压缩,但也要占用CPU进行压缩/解压,但这个特性,使得我们可以灵活的把NTFS部署在高CPU性能+低磁盘性能或低CPU性能+高磁盘性能的地方;第二点就是恢复问题了,在深度嵌入式系统中,很可能没有OS,或只使用RTOS(UCOS1,2,3、FreeRTOS、Vxworks、RTthread等等),这就对系统数据操作的完备性提出了考验。毫无疑问,NTFS的自恢复特性比FAT文件系统有很大优势,而且,NTFS的日志对于非预期的事故有很好的作用,比如断点、意外复位等,在事件结束前NTFS不会记录事件,这样我们的系统在重新启动过程中可以检测到上一次的故障位置,而继续上次的操作,最大程度降低了破坏性;第三点就是效率问题了,NTFS有很多属性,属性,属性,属性……在载入一个NTFS文件的时候已经直接读取了一个文件的属性,甚至包括文件是否被删除或不存在,而FAT文件系统的读取方式是文件分配表——链式检索——访问文件。
但NTFS的缺点和优点正是相对存在的,NTFS最致命的地方在于他是给高性能CPU准备的而并非只有几十到几百MPS的MCU,这导致了NTFS的读写周期将会长的不可想象,不过好在——NTFS由我们来实现,我们可以通过设置一系列的宏开关来决定我们的精简化NTFS要不要磁盘配额,要不要压缩,要不要每次读写时检查扇区是否正确(当然了这个不检查会比较危险),等等。
我们的目标是:在MCU、ARM、DSP或SoC平台上正常读写NTFS格式的移动存储介质,如SD卡。
图1 SD卡格式化成NTFS格式
NTFS的基础讲完了,下面讲一下准备工作,我们的准备工作需要两大类:硬件和软件。
我用ANSI C实现NTFS的初衷是让我的STM32F103能够读取NTFS格式的文件,所以硬件上,我们需要一张SD卡,如下图,我的是8GB的TF卡和SD卡各一张。还需要一个深度嵌入式开发平台。之前反复的提到“深度嵌入式”,那么什么是深度嵌入式呢?我在这里是将它与一般嵌入式做区分的标志,一般的嵌入式系统,比如Linux,WinCE,其中可以直接嵌入NTFS的插件,或自带NTFS,是没有必要让我们自己实现NTFS的,只有那些层次更深的嵌入式,比如RTOS中,我们写的NTFS作为一个文件系统的库插入,才能提到显著的性能、安全性的提高。
在硬件平台这,我用的是曾经做过的一个产品的板子,主MCU是STM32F103ZET6,这个板子设计的时候考虑了硬件兼容,可以直接换成F407Z系列的,当然现在还是ZET6,后面如果NTFS跑不起来,再换F407。板子上有一个34针的液晶屏口,两个LED,一个RTC,一个TF卡插槽,一个TTL电平的串口,这些外设已经足够搞很多事情了。
软件方面,磁盘工具我用的是DiskGenius V4.9.1.334 x64专业版,磁盘数据读取软件用的是WinHEX 14,STM32开发环境是Keil MDK 5.21a,因为NTFS不一定要开发多久,所以直接下载到STM32是不太可能的,费时费力还费芯片,所以需要一个PC机的C语言IDE,我用的是CodeBlocks编辑器+MinGW编译器。
工具基本都备齐了,本章的内容到此也就结束了。
下一节介绍磁盘系统的一些基础和NTFS的框架。
标签:引用 管理员 报警 ttl 深度 故障 vxworks 解压 min
原文地址:http://www.cnblogs.com/Coder-Ku/p/6132585.html