使用 linux,我可以使用对 NAND 的原始访问或通过文件系统访问文件。那么,当我需要知道我的文件在 NAND 中的真正位置时,我应该怎么做?我找不到任何提供此功能的实用程序。此外,我无法检测到任何这种可能性,除了用大量“printk”破解内核(我猜这不是好方法)。有人可以启发我吗?(我正在使用 YAFFS2 和 JFFS2 文件系统)
问问题
1047 次
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 。对于JFFS2或YAFFS2,您可以在 PC 上尝试nandwrite
或其他一些合适的刷机工具。
如何通过文件名获取 NAND 中的真实文件偏移量?
这些文件可能跨越多个NAND 扇区,而且它们几乎从不连续。将文件数据保存在一起并没有太大的优势,因为没有磁盘头需要物理时间来寻找。一些闪存的顺序读取效率略高;而其他闪存将为从另一个擦除块读取提供更好的性能。
我会在 MTD 层或文件系统中打开调试。在实时系统中,文件的位置可能会随着时间在闪存上迁移,即使它没有被写入。这是主动磨损均衡。
于 2014-01-28T15:47:42.503 回答