程序里没有注释在这里我就讲讲我的思路,FATFS默认读取一个扇区为512字节。nandflash以512字节为单位读是很容易实现的,但以512B为单位写要稍微麻烦点。我们在写nand时要擦除该块这样就会破坏其他数据。所以每次写之前都拷贝整块到内存,然后在这个内存块中写相应数据再擦除该块再把这块数据写回。FAT的信息都放在前面扇区这又和启动程序冲突,nand中碰到坏块又不能写入数据。为了解决这个问题我们得建一个转换表把坏块和FAT块都指向后面的好块。当然你在告诉FATFS磁盘容量时就应少给它点了。
说明:我的板子是Mini440 Nand256M,其他容量不支持,另外我发现FATFS可能有些BUG我改了一下里面的代码,可能存在其他错误 但我格式化Nand为FAT新建文件并写1K数据再读出来这个过程是没问题的