野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12099|回复: 4

nand_flash Fatfs

[复制链接]
发表于 2016-3-4 18:40:42 | 显示全部楼层 |阅读模式
火哥,我使用Fatfs来管理nand_flash(K9F1G08U0A),nand_flash必须擦除了之后才能写入,而且必须是进行整块的删除,这样在做页写入的时候,必然会把其它的数据删除,
之后我把这一整块的数据存起来,然后把要写入的数据跟之前存起来的数据整合在一起,然后再写进去。我检查过这个算法没有问题,最后用f_mkfs时,在下面的语句中循环了160次,
也就是整块擦除了160次。
        for (n = 1; n < n_fat; n++) {                /* This loop may take a time on FAT32 volume due to many single sector writes */
                if (disk_write(pdrv, tbl, wsect++, 1) != RES_OK)
                        return FR_DISK_ERR;
        }

f_mkfs最后的返回值位FR_OK,但是使用f_mount时又返回FR_NO_FLIESYSTEM.


是不是nand_flash不能用FATFS来管理??
回复

使用道具 举报

发表于 2016-3-5 08:50:38 | 显示全部楼层
确实一般不会用fatfs管理nandflash,会用一些有读写均衡的文件系统专门管理
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-5 09:22:57 | 显示全部楼层
管理nand flash一般都是用yaffs2文件系统,但是这样管理128M的内存需要很大的内存,M3或者M4的内核根本不够它用,所以才决定用fatfs来管理,这样只需要1K左右的内存就能够管理128M的内存了。
回复 支持 反对

使用道具 举报

发表于 2016-3-5 09:53:38 | 显示全部楼层
nfjiang 发表于 2016-3-5 09:22
管理nand flash一般都是用yaffs2文件系统,但是这样管理128M的内存需要很大的内存,M3或者M4的内核根本不够 ...

这个我不会啊,帮顶
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-18 16:51:20 | 显示全部楼层
这个已经解决了,牺牲了一半的nand flash内存才搞定,128M的内存只能用64M,另一半内存都去用来存放临时数据,还是没有yaffs2好用。yaffs2但要运行在linux上面。谁有更好的办法??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-23 01:07 , Processed in 0.028137 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表