文件系统(File System)是计算机系统必不可少的组成部分,可以说除了部分结构简单的单片机系统之外,文件系统是支撑每一个计算机系统运行的最重要的支撑,无论是操作系统、应用程序、文档还是音视频都是基于文件系统的 。所以由此可见文件系统在计算机上的重要地位 。
嵌入式系统上有很多场合也需要使用大容量存储设备,这时候可以直接使用存储设备的读写API来进行数据的保存和读取,但是这样做的很大不足是无法和电脑系统的文件兼容,如果想将电脑系统上的一张图片或者txt文档存入嵌入式系统使用的存储器中去就会很麻烦,但是如果这个嵌入式存储器使用的是兼容FAT文件系统的存储格式那么气与个人电脑的文件交换就会大大方便 。例如一般场合使用的TF卡,如果直接调用读和写函数进行TF的存取也不是不可以,但是如果这个TF卡上有FAT文件系统的话就可以使用读卡器从电脑上直接拷贝文件,大大方便了文件的交互 。
鉴于文件系统的重要性,有必要好好分析一下文件系统的组成原理,下面以当前主流的windows文件系统FAT32为对象,分析一下文件系统的存储机制 。
下面是对FAT32文件系统的一个简要介绍:FAT32 文件系统您一定不会陌生,最多看到它是在 windows 操作系统里,但在一些嵌入式产品(如手机、MP3、MP4 等)中,也能看到它的身影 。从某种意义上来讲,FAT32文件系统是非常成功的,使我们可以脱离底层储存设备驱动,更为方便高效地组织数据 。给单片机系统中的大容量存储器(如 SD 卡、CF 卡、硬盘等)配以 FAT32 文件系统,将是非常有意义的(如创建的数据文件可以在 windows 等操作系统中直接读取等) 。
我手上有一张512MB的TF卡将其插在电脑上使用二进制查看软件打开TF卡,下面是拷贝的前512字节的数据进行解说:
Offset0123456789ABCDEF00000000EB 58 90 4D 53 44 4F 5335 2E 30 00 02 08 74 18ëX.MSDOS5.0...t.0000001002 00 00 00 00 F8 00 003F 00 FF 00 00 00 00 00.....ø..?.ÿ.....0000002000 34 0F 00 C6 03 00 0000 00 00 00 02 00 00 00.4..Æ...........0000003001 00 06 00 00 00 00 0000 00 00 00 00 00 00 00................0000004080 01 29 22 BE A5 F6 4E4F 20 4E 41 4D 45 20 20€.)"¾¥öNO NAME0000005020 20 46 41 54 33 32 2020 20 33 C9 8E D1 BC F4FAT323É?Ѽô000000607B 8E C1 8E D9 BD 00 7C88 56 40 88 4E 02 8A 56{?Á?Ù½.|ˆV@ˆN.ŠV0000007040 B4 41 BB AA 55 CD 1372 10 81 FB 55 AA 75 0A@´A»ªUÍ.r..ûUªu.00000080F6 C1 01 74 05 FE 46 02EB 2D 8A 56 40 B4 08 CDöÁ.t.þF.ë-ŠV@´.Í0000009013 73 05 B9 FF FF 8A F166 0F B6 C6 40 66 0F B6.s.¹ÿÿŠñf.¶Æ@f.¶000000A0D1 80 E2 3F F7 E2 86 CDC0 ED 06 41 66 0F B7 C9Ñ€â?÷â†ÍÀí.Af.·É000000B066 F7 E1 66 89 46 F8 837E 16 00 75 39 83 7E 2Af÷áf‰Føƒ~..u9ƒ~*000000C000 77 33 66 8B 46 1C 6683 C0 0C BB 00 80 B9 01.w3f‹F.fƒÀ.».€¹.000000D000 E8 2C 00 E9 A8 03 A1F8 7D 80 C4 7C 8B F0 AC.è,.é¨.¡ø}€Ä|‹ð¬000000E084 C0 74 17 3C FF 74 09B4 0E BB 07 00 CD 10 EB„Àt.<ÿt.´.»..Í.ë000000F0EE A1 FA 7D EB E4 A1 7D80 EB DF 98 CD 16 CD 19î¡ú}ëä¡}€ëߘÍ.Í.0000010066 60 80 7E 02 00 0F 8420 00 66 6A 00 66 50 06f`€~...„ .fj.fP.0000011053 66 68 10 00 01 00 B442 8A 56 40 8B F4 CD 13Sfh....´BŠV@‹ôÍ.0000012066 58 66 58 66 58 66 58EB 33 66 3B 46 F8 72 03fXfXfXfXë3f;Før.00000130F9 EB 2A 66 33 D2 66 0FB7 4E 18 66 F7 F1 FE C2ùë*f3Òf.·N.f÷ñþÂ000001408A CA 66 8B D0 66 C1 EA10 F7 76 1A 86 D6 8A 56ŠÊf‹ÐfÁê.÷v.†ÖŠV0000015040 8A E8 C0 E4 06 0A CCB8 01 02 CD 13 66 61 0F@ŠèÀä..̸..Í.fa.0000016082 74 FF 81 C3 00 02 6640 49 75 94 C3 42 4F 4F‚tÿ.Ã..f@Iu”ÃBOO0000017054 4D 47 52 20 20 20 2000 00 00 00 00 00 00 00TMGR........0000018000 00 00 00 00 00 00 0000 00 00 00 00 00 00 00................0000019000 00 00 00 00 00 00 0000 00 00 00 00 00 00 00................000001A000 00 00 00 00 00 00 0000 00 00 00 0D 0A 44 69..............Di000001B073 6B 20 65 72 72 6F 72FF 0D 0A 50 72 65 73 73sk errorÿ..Press000001C020 61 6E 79 20 6B 65 7920 74 6F 20 72 65 73 74any key to rest000001D061 72 74 0D 0A 00 00 0000 00 00 00 00 00 00 00art.............000001E000 00 00 00 00 00 00 0000 00 00 00 00 00 00 00................000001F000 00 00 00 00 00 00 00AC 01 B9 01 00 00 55 AA........¬.¹...Uª
推荐阅读
- C# 获取网络路径文件大小信息的方法
- Windows系统如何设置并连接远程桌面?详细教程来了
- 亿级流量电商系统JVM模型参数二次优化
- 文字、图片、文件 Python发送微信消息给指定好友和微信群
- 如何将Mac系统设置为简体中文?
- 提高windows10系统运行速度的几种方法
- python 用os库和xlrd、xlwd库快速合并相同n个Excel文件操作实例
- 一分钟学会在Mac中如何将文件批量重命名
- word文档怎么做红头文件,word制作红头文件详细操作-
- 读写文件 Python csv模块