主题 : 文件存储问题请教 复制链接 | 浏览器收藏 | 打印
hehe,学习学习~
级别: 新手上路
UID: 18363
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2010-04-08
最后登录: 2012-04-22
楼主  发表于: 2010-04-11 22:08

 文件存储问题请教

在NAND里存储文件,需要经常修改,理论上是会导致nand的物理坏块的,文件读写过程中如果存储器产生坏块了,是否会导致文件操作失败?还是系统在擦写过程中识别坏块后自动能把原该坏块内容复制到其他的块中?另外在应用程序层面能否准确定位一个文件的具体物理存储位置,如何定位?谢谢,各位大侠~
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-04-11 22:19
文件读写过程中如果存储器产生坏块了,是否会导致文件操作失败?还是系统在擦写过程中识别坏块后自动能把原该坏块内容复制到其他的块中?

如果你用的是针对NAND Flash的文件系统,比如jffs2, yaffs/yaffs2或者更新的ubifs,通常不用担心坏块的问题,文件系统会帮你搞定的。

另外在应用程序层面能否准确定位一个文件的具体物理存储位置,如何定位?

不能,因为文件系统会隐藏这些特性。除非应用程序绕过文件系统,直接读写block设备。但这在NAND Flash上绝对是个糟糕的做法,因为这样应用程序必须自己处理坏块等等一系列问题。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
hehe,学习学习~
级别: 新手上路
UID: 18363
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2010-04-08
最后登录: 2012-04-22
2楼  发表于: 2010-04-11 22:24
另外系统启动时提示的“Bad eraseblock xxx at xxxxxxx”和“block xxx is bad”有啥区别?麻烦详细解释一下??
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2010-04-11 22:32

 回 2楼(wanght) 的帖子

意思是一样,都表明某个block被标识为bad block了
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
hehe,学习学习~
级别: 新手上路
UID: 18363
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2010-04-08
最后登录: 2012-04-22
4楼  发表于: 2010-04-11 22:33
谢谢版主,使用的是yaffs2。还有,为了验证读写文件坏块的问题,我写了了个测试文件,反复打开,修改然后关闭并fflush,已经数千万次了,不知为何从系统启动时打印的信息看并没有增加新的坏块?难道该文件所在nand的block真的没有损坏吗?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2010-04-11 22:41

 回 4楼(wanght) 的帖子

yaffs2有wear leveling功能,可以避免某一block被过度存取而损坏。(参考http://esslab.tw/wiki/index.php/YAFFS
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
这个阶段正是我事业的上升期,我怎么能走得开呢?
级别: 精灵王
UID: 3197
精华: 3
发帖: 770
金钱: 6995 两
威望: 5398 点
综合积分: 1600 分
注册时间: 2008-12-30
最后登录: 2010-12-31
6楼  发表于: 2010-04-11 23:36
通俗的说就是yaffs2对flash进行均衡读写,你反复写入一个文件,每次的物理存储位置都是不同的。