【发布时间】:2012-09-21 15:35:48
【问题描述】:
我正在开发一个在资源受限的微控制器上使用 FAT16 文件系统结构的低级应用程序,这需要我编写自己的自定义访问代码。我已经研究过使用 Petit FAT 和 FatFS 之类的库,但不幸的是,我认为这两种库都不适合我的需求。不过,它们已成为 FAT 工作原理的有用参考。
我仍然遇到问题的一个领域是子目录条目。
根据this,一个目录条目可以指向1个起始簇。对于数据文件,这只是第一个数据簇。对于目录,这是子目录的起始簇(可能是另一个目录条目)。
如果从根目录到基本文件只有 1 个目录路径,这很好用,但我不明白这如何允许您分支到任何给定目录下的多个文件/目录。
例如。目录结构:
- root dir 1
- sub dir 1
- file 1
- sub dir 2
- file 2
- root dir 2
- sub dir 3
根据我对FAT16结构的理解,
紧跟在 FAT 后面的是第一个根目录条目的簇,其中包含 root dir 1 的信息。然后第一个集群字段将包含sub dir 1 的集群地址,他的第一个集群字段将包含file 1 的集群地址,他的第一个集群指向一个数据集群。
然后,第二个根目录条目将在包含root dir 2 信息的 FAT 末尾之后的第二个簇开始。它的第一个簇将指向sub dir 3 的簇,而sub dir 3 的第一个簇将指向一个空簇(如 FAT 中标记的那样)。
我在这里缺少什么?我想不出一种从根目录条目向下导航到 sub dir 2 的方法。
【问题讨论】:
-
我认为您可能会将“根目录”与一般的“目录”混淆。看这里:en.wikipedia.org/wiki/File_Allocation_Table
-
我认为你是对的,根目录会指向
A:或0:等,并且有一个指向root dir 1的子条目(正确?如果是这样,我会更新我的问题)。但是,我不确定这如何解决单个目录中的多个目录/文件的问题。
标签: microcontroller directory-structure fat16