事情是这样的,LZ 有一块STM32F407的开发板,上面有一个 1G 的 NandFlash ,本来 LZ 打算使用 FATFS 文件系统,用电脑拷贝文件进去,然后用LCD 显示,再放放音乐之类的,然后查资料,然后就发现
很多人说 FATFS 文件系统不是用于NandFlash 缺少 FTL 层之类的,然后查了查要使用 YAFFS2 文件系统,那就换吧,于是又是找资料又是移植,然后就发现没办法拷贝文件进去,windows 又不识别,
莫不是只有 CPU 才能访问这个 Nand了,那LZ 这些工夫岂不是白干了,我就想问问,YAFFS2这个文件系统到底什么用?FATFS 真的不是用于 Nand 吗?还是说 STM32 不太适合搭载 YAFFS2?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
STM32确实不太适合挂YAFFS,因为YAFFS是以页为单位分配空间的,所以要在内存里创建文件结构的树,你想挂1G的NAND,必须要外挂一片至少1M的SRAM.
当然如果系统本来就有外部SRAM,还是可以用YAFFS的,需要将整片SRAM设置为动态分配的内存,因为YAFFS内部是用malloc来分配内存的.
windows当然只能识别FAT文件系统,所以如果你想直接让windows识别你的NAND为U盘,你就需要再挂载一个FATFS,用yaffs的文件IO来实现fatfs的文件IO,也就是说你要用yaffs来写一个FTL层.
yaffs有什么用呢,这就要从fat为什么不适用于nand说起,主要两点:fat文件系统首先不会做磨损平衡,所以nand会坏得很快.再一个,fat在系统非正常结束,比如掉电,复位等情况下,不能保证数据完整性,甚至fat文件系统的完整性.yaffs就能解决fat文件系统的不足,详细参考官方文档http://www.yaffs.net/documents
板子上是有一个64M 的 PSRAM 的,我打算挣扎一下,看看能不能完成,那个自己写中间IO层有点困难,我在研究研究,谢了
原子哥,就算用429的芯片,好像也不能解决RAM 不够的问题,还是要外挂,这样的话429和407好像也没太大的区别吧。。。
一周热门 更多>