[STM32F1] 求在无操作系统情况下,在NAND上移植YafFS的说明及相关帮助

[复制链接]
 楼主| can123dao 发表于 2015-1-26 20:27 | 显示全部楼层 |阅读模式
最近小弟有个任务,要在NAND上移植个文件系统,以前没有做过这相关的东西,
看了一下,FatFS要做一些坏块管理,和擦写均衡的算法,不怎么适合NAND
据说YafFS比较合适在NAND上用。但资料基本上是在Linux下的,有说其direct可直接移植到裸机上
无操作系统情况下,在NAND上移植YafFS的说明,及相关问题都见得比较少。
论坛里有兄弟伙有相关经验或者资料能匀一点不。
在此先行谢过
airwill 发表于 2015-1-26 21:13 | 显示全部楼层
NAND 上保存数据, 要想可靠地保存数据, 不管有没有文件系统, 坏块管理自然的必要的
至于擦写均衡的算法,由于可避免过早的擦写寿命, 是有一定的好处的, 这个也有专门的算法代码参考, 并非一定要跟文件系统绑一起吧
 楼主| can123dao 发表于 2015-1-27 11:36 | 显示全部楼层
本帖最后由 can123dao 于 2015-1-27 16:32 编辑
airwill 发表于 2015-1-26 21:13
NAND 上保存数据, 要想可靠地保存数据, 不管有没有文件系统, 坏块管理自然的必要的
至于擦写均衡的算法,由 ...

坏块管理是一定要的。
在开始初始化时,通过读各个块的标志Byte,然后创建一个坏块表,在写的时候,如果碰到要写的地址在坏块内,就将要写的地址增加到下一个好块去。

  1. page++;
  2. if(page==64)
  3. {
  4.    do
  5.    {
  6.     block++;
  7.     status=readblockindex();
  8.    }
  9.    while(status)
  10. }

大概就是这样?
这应该写到“媒介多扇区写接口”diskio_wirte()里,还是NAND_WRITE()里?
这就是所谓的静态的坏块管理。如果要做得更好,就要在每次数据操作的时候都去读标志,以便及时更新坏块表是不?在使用过程中产生的新坏块,是怎么判断的?
qqzhu222888 发表于 2017-6-23 19:21 | 显示全部楼层
楼主,我现在也在困惑这个问题,能加个qq请教一下吗?QQ号:993653406
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

114

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部