如何通过文件名获取NAND中的实际文件偏移量?

时间:2013-02-04 09:08:10

标签: linux file-access flash-memory jffs2

使用linux,我可以使用对NAND的原始访问或通过文件系统访问文件。所以,当我需要知道,我的文件真正位于NAND中时,我该怎么办?我找不到任何提供此功能的实用程序。而且,除了用大量的“printk”破解内核之外,我无法发现任何这种可能性(我认为这不是很好的方式)。 有人可以开导我这个吗? (我正在使用YAFFS2和JFFS2文件系统)

1 个答案:

答案 0 :(得分:2)

您可以使用nanddump制作任何分区的副本。将分区转储传输到PC。 nandsim 实用程序可用于在PC上安装分区。

modprobe nandsim first_id_byte=0x2c second_id_byte=0xda \
   third_id_byte=0x90 fourth_id_byte=0x95 parts=2,64,64
flash_erase /dev/mtd3 0 0
ubiformat /dev/mtd3 -f rootfs.ubi

此命令模拟具有四个分区的Micron 256MB NAND闪存。如果您只捕获单个分区而不是整个设备,请不要设置部件。您还可以在每个分区上执行nanddump,然后将它们连接起来。此代码使用UbiFs分区将 mtd3 作为目标。对于 JFFS2 YAFFS2 ,您可以在PC上尝试nandwrite或其他适当的闪存实用程序。

  

如何通过文件名获取NAND中的实际文件偏移量?

这些文件可能跨越几个 NAND扇区,它们几乎从不连续。将文件数据保持在一起没有太大的好处,因为没有磁盘头需要物理时间来搜索。有些闪存的顺序读取效率略高;然而,其他闪存将为来自另一个擦除块的读取提供更好的性能。

我会在MTD层或文件系统中打开 debug 。在实时系统中,即使文件,文件的位置也可能会随着时间的推移而在闪存中迁移。这是主动磨损平衡。