我目前正在尝试在Xillinx Kintex 7卡上使用C编码FAT系统。它配备了MicroBlaze,我已经成功创建了大部分所需功能。但我遇到的问题是关于文件夹的总容量,我从网上了解到,在FAT32中,一个文件夹应该能够包含超过65,000个文件,但我却被限制为每个文件夹509个文件。我认为这是因为我对FAT32工作原理的理解有误。以下是我已经实现的内容:
我创建了一个格式化函数,可以将正确的数据写入MBR(扇区0)和卷ID(磁盘上的第2048个扇区)。
我创建了一个函数,用于写入根目录的内容(从第124148个扇区开始的第一个簇)。
我创建了一个函数,用于编写一个包含N个大小为X的文件的新文件夹。文件夹的名称写在根目录(扇区124148)中,并且文件名写在下一个簇(扇区124212,因为我将簇大小设置为64个扇区)。最后,文件内容(一个简单的计数器)被写入下一个从扇区124276开始的簇中。
这里的问题是,一个文件夹的大小为1个簇,这意味着它的容量为64个扇区= 32KB,我只能在一个目录中创建512(减去2)个文件!那么,我的问题是:是否可以更改文件夹的簇数?目前我只使用了1个簇,我不明白如何更改它。与驱动器的FAT有关吗?
注意:当我将驱动器插入Windows时,它被识别并且我可以访问和读取每个文件(除超过510限制的文件外),我也可以通过Windows资源管理器创建新文件。问题显然在于我对文件和文件夹创建的理解方式不正确!
我创建了一个格式化函数,可以将正确的数据写入MBR(扇区0)和卷ID(磁盘上的第2048个扇区)。
我创建了一个函数,用于写入根目录的内容(从第124148个扇区开始的第一个簇)。
我创建了一个函数,用于编写一个包含N个大小为X的文件的新文件夹。文件夹的名称写在根目录(扇区124148)中,并且文件名写在下一个簇(扇区124212,因为我将簇大小设置为64个扇区)。最后,文件内容(一个简单的计数器)被写入下一个从扇区124276开始的簇中。
这里的问题是,一个文件夹的大小为1个簇,这意味着它的容量为64个扇区= 32KB,我只能在一个目录中创建512(减去2)个文件!那么,我的问题是:是否可以更改文件夹的簇数?目前我只使用了1个簇,我不明白如何更改它。与驱动器的FAT有关吗?
注意:当我将驱动器插入Windows时,它被识别并且我可以访问和读取每个文件(除超过510限制的文件外),我也可以通过Windows资源管理器创建新文件。问题显然在于我对文件和文件夹创建的理解方式不正确!