三星 nand flash 读写问题
小陆zi 2012-08-09 05:15:46 hi 大家好:
我最近在看flash的驱动。环境就是在uboot下。
我的问题是这样:
现象:
nand write 时候column address 始终保持0,但是page的address 在自加。
函数:
do_nand -> nand_do_write_ops -> nand_write_page -> s3c_nand_write_page_8bit
在nand_write_page中调用chip->cmdfunc(mtd, NAND_CMD_SEQIN, 0x00, page);
我把page打印出来page是从 0 1 2 3 ...... 511
那么我的理解是写flash的操作是以page为单位的。page 自加 完成偏移。
我看了网上的一篇文章,对于K9K8G08 flash的操作时候定义的寻址方式有出入。
A0 - A11 是col的地址,2K 个 Byte + 64 Byte的寻址。
A12 - A17 是page在block中的偏移量。应为有64个page组成一个block。
A18 - A30 是block的index。K9K8G08的片内一共有8192个block。
但是我自己写了一个测试函数去读flash的中的内容的时候发现 读出来的数据和写入的数据不符合。
我自己写的flash的read函数就是想要:
从第一个block中第一个page中读出前256Bytes (0 block 0 page offset 0 col)
函数这样写:
cmdfunc(mtd, NAND_CMD_READ0, 0, 0);
device_ready();
nand_read();
printf("content %X\n",buf);
打印出来的数据和uboot内容不一样。这是为什么啊?
谢谢
希望大侠 多指点!