首页
学习
活动
专区
圈层
工具
发布

FAT16目录
EN

Stack Overflow用户
提问于 2012-09-21 14:54:38
回答 1查看 1.3K关注 0票数 4

我正在开发一个低级应用程序,它在资源受限的微控制器上使用FAT16文件系统结构,这要求我编写自己的自定义访问代码。我已经研究过使用像Petit FAT和FatFS这样的库,但不幸的是,我认为这两个库都不能满足我的需要。不过,它们可以作为FAT工作原理的有用参考。

我仍然遇到问题的一个方面是子目录条目。

根据this的说法,一个目录条目能够指向1个起始集群。对于数据文件,这只是第一个数据集群。对于目录,这是子目录的起始集群(假设是另一个目录条目)。

如果从根目录到基本文件只有一个目录路径,那么这种方法工作得很好,但我不明白这如何允许您在任何给定目录下分支到多个文件/目录。

例如。目录结构:

代码语言:javascript
复制
- root dir 1
    - sub dir 1
        - file 1
    - sub dir 2
        - file 2
- root dir 2
    - sub dir 3

根据我对FAT16结构的理解,

紧跟在FATs之后的是第一个根目录条目的集群,其中包含root dir 1的信息。然后,第一个集群字段将包含sub dir 1的集群地址,file 1的第一个集群字段将包含指向数据集群的第一个集群的集群地址。

然后,第二根目录条目将在包含用于root dir 2的信息的FAT之后的第二群集中开始,然后结束。它的第一个集群将指向sub dir 3的集群,后者的第一个集群将指向一个空集群(如FAT中所示)。

这里我漏掉了什么?我想不出从根目录条目向下导航到sub dir 2的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-21 15:35:49

首先,为了消除混淆,一个目录条目不占用单个集群。正如您从源代码中看到的,单个目录条目只有32个字节,其中集群的大小可能在4KB到64KB之间,这取决于您正在使用的FAT的磁盘大小/版本。因此,FAT之后实际上是一个目录条目的

对于子目录,您可以在父目录条目中找到其目录条目表的起始集群。它们不一定要打包到磁盘的开头。

为了进一步解释,让我们看一下原始示例的一个稍微修改过的版本:

代码语言:javascript
复制
\ (root)
    - dir 1
        - sub dir 1
            - file 1
        - sub dir 2
            - file 2
    - dir 2
        - sub dir 3

遍历到sub dir 2的步骤

  1. 找到根目录条目表,它包含在FAT之后的集群中;
  2. 从根目录条目表中查找条目dir 1,并获得其起始集群;
  3. 从上面获得的集群中加载dir 1的目录条目表;

<代码>H113查找条目sub dir 2,并获得上面获得的集群的起始条目;

然后,您现在应该有了sub dir 2的目录条目表。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12525600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档