|
CPU为32位ARM芯片
Nand flash芯片为三星K9F1G08X0M (X8),有效存储128M + 4M OOB
地址分配如下面所示:
IO0 IO1 IO2 IO3 IO4 IO5 IO6 IO7
1st Cycle A0 A1 A2 A3 A4 A5 A6 A7
2nd Cycle A8 A9 A10 A11 L L L L
3th Cycle A12 A13 A14 A15 A16 A17 A1 A19
4th Cycle A20 A21 A22 A23 A24 A25 A26 A27
本人目前的写地址方式如下:
*NAND_ADDR_BASE = startAddr & 0xff;//column address
*NAND_ADDR_BASE = (startAddr >> 8) & 0x0f;//column address
*NAND_ADDR_BASE = (startAddr >> 16) & 0xff;//row address
*NAND_ADDR_BASE = (startAddr >> 24) & 0xff;//row address
出现的问题是:每一块的第0页,读写都正确,但是其他页总有读取数据错误,一般是5个错误字节,值为0x0F。无论是对块的擦出还是页写入,读出后的数据总是这样。
初步怀疑地址赋值有误,望有过128M Nand flash编程经验的大哥不吝赐教。
|
|