日期:2014-05-16  浏览次数:20669 次

关于应用程序直接读写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 信息,那就。。。。