mini2440开发板,采用开发板自带的linux-2.6.13操作系统。nand型号k9f1208,根据需要我将nand分为4个区,具体如下:
creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00050000 : "bootloader"
0x00050000-0x00250000 : "kernel"
0x00250000-0x03e50000 : "yaffs"
0x03e50000-0x04000000 : "param"
第4个分区(mtdblock3)用于保存网络参数。
现在有2个问题:
1:nand write后不断电,立即nand read,则读写没问题。但是断电后,重新读取nand,发现数据没有保存成功。
2:nand write,系统reboot后,再断电重新读nand,则此时数据保存成功。
也即:nand写完后,系统断电重启则无法保存。nand写完后,先软件reboot系统,然后断电重启系统,则可以保存。我在开发板和我们自己的板子上也试过,现象是一致的。我想贵公司开发板提供的mtd驱动部分可能有bug。
我的程序如下:
NANDflash_fd = open("/dev/mtdblock/3",O_RDWR);
lseek(NANDflash_fd,0,SEEK_SET);
lseek(NANDflash_fd,10,SEEK_SET);
write(NANDflash_fd,&GPS_UTC_LEAPS,sizeof(GPS_UTC_LEAPS));
这个问题应该是开放板的共性,希望版主能帮助解决!谢谢!