chipA[0],chipB[0],chipA[1],chipB[1] ...
等),我可以看到整个转储中都有ascii文本。根据1芯片的数据表,我了解以下信息:块:每个设备4096
页面:每个块64
页面大小:(2K data + 64个备用字节)= 2112字节
但是由于芯片交错在一起,实际上每页有(4K数据+ 128个备用字节)= 4224字节数据。
备用区域是相邻的,而不是分开的,因此页面中512字节数据的每个部分紧随其后是16字节的备用数据(或带外:OOB)。 >
Adjacent layout: +-----+----+-----+----+-----+----+-----+----+-----+----+-----+----+-----+----+-----+----+ | 512 | 16 | 512 | 16 | 512 | 16 | 512 | 16 | 512 | 16 | 512 | 16 | 512 | 16 | 512 | 16 | +--^--+-+--+--^--+-+--+--^--+-+--+--^--+-+--+--^--+-+--+--^--+-+--+--^--+-+--+--^--+-+--+ | | | | | | | | | | | | | | | | +----+ +----+ +----+ +----+ +----+ +----+ +----+ +----+
仅分析备用区域时,我可以看到前3个字节似乎在增加。我认为前两个字节是块号,而我相信第三个字节是页码。在“页码”值为
0x3F
之后,它将重置为0x00
,并且“块号”将递增。我对剩余的13个字节什么都不知道,但是我假设有些(如果不是全部)是ECC字节。例如,有三个部分的“块号”为0x2C47
,我知道这可能是由于NAND的损耗均衡所致。但是,我不知道如何读取良好的页面/块,因此无法装入/提取它。似乎没有任何标准,相信我-我搜寻了很多哈哈。系统正在运行QNX6。#1 楼
我不知道它是否完全适用,但是QNX的以下文档建议:备用件由“序列号”,“文件ID”,“偏移量”,“ CRC”和“ ECC”有一些特殊的块,其中包含损耗均衡信息,例如坏块,擦除计数和文件系统层次结构
不在备用区域,但有一个专用区域。该页面建议这可能是基于事务的ETFS文件系统。
评论
检查一下:linux-mtd.infradead.org/tech/mtdnand/x144.html@yaspr我认为该链接仅适用于基于MTD的FSes。 QNX可能使用另一种方法。