K9K8G08U1M
- 512Mx8Bits
- Package Type: 48-Pin TSOP1
![](https://p-blog.csdn.net/images/p_blog_csdn_net/cpuwolf/samsung_flash.bmp)
这是典型的NAND flash,由block组成,每一个block包含64个Pages,而一个page是2k+64=2048+64=2112字节。对于一个page,0~2047个字节用来存储数据,2048~2111,共64个字节,Spare Area,用来存储page中每个sector的信息,其中第一个16字节用于描述第一个512个字节,第二个16字节用于描述第二个512个字节,以此类推,共64个字节,用于描述前面的2048个字节。这每一个16字节,在little-endian的CPU上可以用下面的结构体表示。
typedef struct {
BYTE badBlock;
BYTE oemReserved;
WORD reserved2;
DWORD reserved1;
BYTE ecc[3];
BYTE unused[5];
} LB_SPARE_AREA;oemReserved是OEM自定义的字段
ecc用于验证512个字节
badBlock 是用来描述 block 的,在下一节会有详细的说明![](https://p-blog.csdn.net/images/p_blog_csdn_net/cpuwolf/flash_page.bmp)
Invalid Block的判别标准
typedef struct {
BYTE badBlock;
BYTE oemReserved;
WORD reserved2;
DWORD reserved1;
BYTE ecc[3];
BYTE unused[5];
} LB_SPARE_AREA;
Invalid Block ,就是我们常说的坏块。 SAMSUNG 规定在 block 的第一和第二个 page 的 Spare Area 的第一个字节,对于非 0xFF 的,就判定该 block 为 Invalid Block 。也就是上面结构体中的 badBlock ,如果不等于 0xFF ,就说明是坏块。反之,对于一般的 block , badBlock==0xFF 。