关于应用程序直接读写Flash的问题
RT,我用如下方式读写flash的:
C/C++ code
//打开设备
if((fd = open(FALSH_DEVICE,O_RDWR)) == -1)
{
perror("open Flash");
exit(1);
}
C/C++ code
//填充MTD设备容量结构体
if(ioctl(fd,MEMGETINFO,&meminfo) != 0)
{
perror("MEMGETINFO");
close(fd);
exit(1);
}
C/C++ code
//write
byte_write = pwrite(fd,writeBuf,WEITE_BUFFER_SIZE,0);
//read
byte_read = pread(fd,readBuf,READ_BUFFER_SIZE,0);
我现在想问的就是在写之前和写之后,每个page的OOB相同么?我在写之前读取OOB,在写之后再按原样写进去??
请教高手??
------解决方案--------------------
1. 每个page的OOB相同,不同的page size, 有不同的OOB size.
2. 写OOB的方法,建议参考nandwrite.c
参考我的blog: http://blog.csdn.net/wenxy1/archive/2010/04/13/5481616.aspx
------解决方案--------------------
不会, 坏块的标准是 :
当该块不能被擦除时, 才会标记为坏块,跟 oob 信息关系不大。
在每个块的第一个page的 oob 信息中标记坏块,
但是如果你自己去写oob 信息,刚好又写到了第一个page的oob 信息,那就。。。。