[应用相关] nand_if.c文件是不是提供了nand flash的写平衡呀?

[复制链接]
5263|6
 楼主| tsx1983 发表于 2009-5-31 23:13 | 显示全部楼层 |阅读模式
看了一下,没看明白它的实现机制是什么样的?有没有介绍这个实现方法的**?
Again_gyf 发表于 2009-6-1 15:07 | 显示全部楼层

给个文件地址?没看到

ijk 发表于 2009-6-1 16:21 | 显示全部楼层

nand_if.c文件

  nand_if.c文件,似乎提供了比较简单的nand flash的写平衡(wear leveling)。
skyler 发表于 2009-6-1 17:58 | 显示全部楼层

有wearleveling

刚稍微看了一下,

ST的例子写得不错,的确有wearleveling
楼主主要把LUT理解了,其实也就是一个逻辑-物理对换表,对flash管理就会比较清晰了.
不过这个并非globa wearleveling,而是以zone为单位的.当然你可以改为以chip为单位,但需要更大的ram.

另外最好不要将此代码用于MLC flash,对于MLC会更复杂一些.
 楼主| tsx1983 发表于 2009-6-1 18:26 | 显示全部楼层

写平衡基本原理我是懂的,就是想确认一下到底好不好使

写平衡我研究过周立功的代码,但是一直没调成功,一调用函数就HardFault。后来就没时间去调了。偶然看见ST也有提供了这个文件,但是看见他的LUT才1024就失望了,也没时间去研究他到底是如何实现的,所以不敢贸然使用它.
我的nand flash是三星的K9F系列。如果ST的这个好使,我打算 把它改到K9F系列上去,再移植个FATFS什么的
skyler 发表于 2009-6-1 20:30 | 显示全部楼层

几点建议

zlg的代码我没看过,楼主可以传上来吗?或告知链接.

LUT完全可以自己去设计,例子中使用是u16,你可以自己定义为u8,算法适当做修改.要做globa wearleveling要视你的ram有多少,是否舍得.
其实有一些开源代码是globa的,要研究的话可以看看:
http://www.linux-mtd.infradead.org/doc/ubi.html

补充一下上面说此代码不适于mlc的原因:没有ecc,没有坏块替换,不能支持顺序写的nand...

建议如果你要在系统中用数据存储,何不直接用sd卡?将nand flash管理解放出去,丢给卡去处理吧.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

160

帖子

0

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