7553|14

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

nandflash使用中出现坏区导致wince系统崩溃 [复制链接]

在使用arm9开发板时,对nandflash读写上千次之后,系统出现问题,
打开调试终端后发现:

FMD_GetBlockStatus::Logical block 0x53B is marked as bad
FMD_GetBlockStatus::Logical block 0x53B is marked as bad
FMD_GetBlockStatus::Logical block 0x53B is marked as bad
LLD_ReadSector: Timed out waiting for Nand Ready signal
FMD_GetBlockStatus::Logical block 0x53B is marked as bad
FMD_GetBlockStatus::Logical block 0x53B is marked as bad
FMD_GetBlockStatus::Logical block 0x53B is marked as bad

哪位高手碰到了类似情况,如何解决啊

最新回复

其实如果bootloader能起来,直接重新烧写个nk就可以了。。。。  详情 回复 发表于 2009-11-30 14:10
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
如果你存NK的部分出现坏块,那只能重新烧写系统了。哈哈。
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
系统能启动的,只是在进入nandflash,打开文件时就不行了
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

4
 
多烧写几遍的往往就好了
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
什么NAND?SLC的10W次,MLC的1W次,这两个次数是可以保证的,指的是同一个BLOCK的擦除次数。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
???
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
正常情况下,NK出现坏块就只能重新烧录了,而且如果是MBR,文件系统损坏的话,就需要格式化后再烧才可以。
不过我有个疑问哈: NANDFLASH只读不写也会产生坏块吗?(那位大牛,解释一下,谢谢)

要解决的话,我倒有个想法,不过自己没实现过,说出来供参考下:
NK区不是有可能出现坏块嘛,那就利用PC的GHOST方案,咱们来招双系统,备份还原。
具体步骤:
1、FLASH分区的时候多划一块区域给NK备份,可以选择最后的块区。
2、在BOOT里建立NK索引表,和管理机制(在FLASH驱动中,FMD),以及对备份区的映射表。
3、BOOT在从FLASH拷贝NK到RAM之前需要先遍历NK区域,检测坏块,如果有坏块产生:
   A、申请新BLOCK;B、从备份区拷贝对应BLOCK到新BLOCK中;C、改写NK索引表;D、按照索引表拷贝NK到RAM中;E、跳转到NK
(以上步骤就是管理机制了)。
   如果没有,那就更好了,直接拷贝到RAM中,然后跳转NK。

当然前提是我们假定备份区不会出现坏块。因为备份区只读不写,而且读次数有限,所以方案上应该是可行的。
BOOT也可以类似处理下。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

8
 
NANDFLASH 比之norflash、就是会出现坏块,
一般来说要加ECC校验的,
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

9
 
有些坏块是假象,你可以从新全片擦除一次再试试。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

10
 
就事论事,此段错误出现在FMD_GetBlockStatus        函数实现中,
// If the sixth byte isn't equal to 0xFF, the block is bad
if ((UCHAR)SecInfo.bBadBlock!=0xFF)
{
  RETAILMSG(1, (TEXT("FMD_GetBlockStatus::Logical block 0x%X is marked as bad\n\r"), blockID));
  BlkStatus |= BLOCK_STATUS_BAD;
  return BlkStatus ;
}
检查nandflash块时,出现坏区,出现以下警告,更新坏区记录就是了,问什么要连续输出以下警告,导致系统也不能使用,问高手?
FMD_GetBlockStatus::Logical block 0x53B is marked as bad
FMD_GetBlockStatus::Logical block 0x53B is marked as bad
FMD_GetBlockStatus::Logical block 0x53B is marked as bad
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 9 楼 luckboyzzh 的回复:
就事论事,此段错误出现在FMD_GetBlockStatus        函数实现中,
// If the sixth byte isn't equal to 0xFF, the block is bad
if ((UCHAR)SecInfo.bBadBlock!=0xFF)
{
? RETAILMSG(1, (TEXT("FMD_GetBlockStatus::Logical block 0x%X is marked as bad\n\r"), blockID));
? BlkStatus |= BLOCK_STATUS_BAD;
? return BlkStatus ;
}
检查nandflash块时,出现坏区,出现以下警告,更新坏区记录就是了,问什么要连续输出以下警告,导致系统也不能使用,问高手?
FMD_GetBlockStatus::Logical block 0x53B is marked as bad
FMD_GetBlockStatus::Logical block 0x53B is marked as bad
FMD_GetBlockStatus::Logical block 0x53B is marked as bad



大概是fal管理nand的时候,有个retry的过程,看看fal的实现吧
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 
提醒件事情就是,不要擦了再判断是否是坏块和标记坏块,要先判断是否是坏块,然后再去擦除,擦除失败再把它标记为坏块,这样就没问题了。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

13
 
读也是有寿命的,如果只读不写,读一定次数后将不准,需要重新擦写,这种情况其实不是坏块。
如果擦除失败,一般来说写也会失败,这样通常标记会失败,相当于一页二次写入,这种情况比较麻烦=。=
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

14
 
把FLASH低级格式化,然后再重新烧EBOOT和NK。
NANDFLASH有坏块很正常,标为坏块的系统不用再去里面写数据。
至于打印出FMD_GetBlockStatus::Logical block 0x53B is marked as bad ,是系统启动的时候,会检测每一个block的状况,如有异常,打印出来提醒而已,不会影响正常的使用。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
其实如果bootloader能起来,直接重新烧写个nk就可以了。。。。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表