用户的数据逐页写入NAND存储器。页面大小是特定内存芯片的物理常数参数,不能更改(通常为~0.5-16kb)。用户的数据由小块(512; 1024; 2048b)切片,然后是ECC码。页面中有多个数据和其他区域。页面的内部结构是可变的,仅取决于控制器的模型。页面总是有3个不同的区域 - 数据区,备用区,ECC。根据控制器的型号,这些区域的分配可能会有很大差异。
用于页面布局分析和分配的最方便的工具是与Structure查看器配合使用的Bitmap查看器。页面布局的分析基于模式分析及其在内存芯片转储中的边界识别。
数据区
512字节 - 用于旧芯片,其中控制器不使用加扰(XOR),旧手机和旧智能手机(Android 2.x及更低版本,其他)。
1024字节 - 用于所有带加扰的现代闪存设备。据统计,10个设备中有8个使用此数据区域大小。
2048字节 - 用于所有Sandisk设备。
备用区
必须找到并分配的备用区域最重要的结构是:
LBN - 占用2个字节,值在块之间变化。
标题(块标题) - 占用1个字节,几乎所有块中的常量值。
ECC
ECC区域可以具有每块10-240字节范围内的任何大小。每个数据区块后面都有其唯一的ECC代码。
这篇文章描述了这些领域的典型模式。