0

使用 linux,我可以使用对 NAND 的原始访问或通过文件系统访问文件。那么,当我需要知道我的文件在 NAND 中的真正位置时,我应该怎么做?我找不到任何提供此功能的实用程序。此外,我无法检测到任何这种可能性,除了用大量“printk”破解内核(我猜这不是好方法)。有人可以启发我吗?(我正在使用 YAFFS2 和 JFFS2 文件系统)

4

1 回答 1

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

此命令模拟具有四个分区的美光 256MB NAND 闪存。如果您只捕获单个分区而不是整个设备,请不要设置部分。您也可以nanddump在每个分区上执行,然后将它们全部连接起来。此代码针对具有 UbiFs 分区的mtd3 。对于JFFS2YAFFS2,您可以在 PC 上尝试nandwrite或其他一些合适的刷机工具。

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

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

我会在 MTD 层或文件系统中打开调试。在实时系统中,文件的位置可能会随着时间在闪存上迁移,即使它没有被写入。这是主动磨损均衡。

于 2014-01-28T15:47:42.503 回答