图解DM800 se机器NAND FLASH芯片坏块检测和处理方法

来源 :卫星电视与宽带多媒体 | 被引量 : 0次 | 上传用户:kj8231926
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
   NAND FLASH坏块处理机制
  大家都知道,机械硬盘会产生坏道,FLASH芯片也会这样,一般我们称此为“坏块(Bad Block)”。在NAND FLASH中,一个块中含有1个或多个位是坏的,就称其为坏块。
  产生坏块的原因有两种:
  (1)出厂时就有的坏块,称作Factory masked bad block(厂屏蔽坏块)或Initial bad/invalid block(初始坏/无效块),NAND FLASH器件中的坏块是随机分布的。以前做过消除坏块的努力,但发现成品率太低,代价太高,成本不划算。
  (2)使用过程中产生的坏块,称作Worn-out bad block(破旧的坏块)。由于使用过程时间长了,在擦除块时出错,说明此块坏了,在程序运行过程中发现,并且标记成坏块。
  正常的块写入读出都是正常的,而坏块的读写是无法保证的。在Linux系统中,对于NAND FLASH有坏块管理(BBM,Bad Block Managment)机制,通过一个对应的坏块表(BBT,Bad Block Table)来记录好块,坏块的信息,以及坏块是出厂就有的,还是后来使用产生的。
  在L i n u x内核M T D(M e m o r y Technology Device,内存技术设备)架构和Uboot中的NAND FLASH驱动,在加载完驱动后,都会主动扫描坏块,建立必要的BBT,以备后面坏块管理所使用。下面是DM800 se机器在系统启动过程中,通过超级终端获取的一段进程信息,可以看出执行BBT和ECC管理。
  [4294669.853000] BrcmNAND mfg ad 76 Hynix HY27US08121A (dream) 64MB
  [4294669.854000]
  [4294669.854000] Found NAND: A C C = 1 7 f f 1 0 1 0 , c f g = 0 4 0 4 2 3 0 0 , flashId=ad76ad76, tim16
  [4294669.855000] BrcmNAND version= 0x0302 64MB @00000000
  [ 4 2 9 4 6 6 9 . 8 5 6 0 0 0 ] B 4 : N a n d S e l e c t = 4 0 0 0 0 0 0 2 , nandConfig=04042300, chipSelect=-1
  [4294669.856000] brcmnand_probe: CS-1: dev_id=ad76ad76
  [ 4 2 9 4 6 6 9 . 8 5 7 0 0 0 ] A f t e r : N a n d S e l e c t = 4 0 0 0 0 0 0 2 , nandConfig=04042300
  [4294669.858000] Found NAND chip on Chip Select -1, chipSize=64MB, usable size=x
  [4294669.859000] brcmnand_scan: B4 nand_select = 40000002
  [4294669.859000] brcmnand_scan: After nand_select = 40000002
  [4294669.860000] page_shift=9, bbt_ erase_shift=14, chip_shift=26, phys_erase_ sh4
  [4294669.861000] Brcm NAND controller version = 3.2 NAND flash size 64MB @1c0000
  [4294669.862000] mtd->oobsize=16, mtd->eccOobSize=16
  [4294669.862000] brcmnand_scan: mtd->oobsize=16
  [4294669.863000] brcmnand_scan: oobavail=12, eccsize=512, writesize=512
  [4294669.864000] brcmnand_scan, eccsize=512, writesize=512, eccsteps=1, eccleve3
  [4294669.865000] brcmnand_default_ bbt: bbt_td = bbt_main_descr
  [4294669.867000] brcmnandCET: Status -> Deferred
   DM800 se NAND FLASH芯片分区
  D M 8 0 0 s e机器(包括S R 4机器)N A N D F L A S H芯片型号为HY27U518S2CTR(2011年前期采用HY27US08121B)(U703),如图1所示。这是韩国Hynix(海力士)公司的NAND FLASH芯片,采用64M×8bit结构,容量为64MB,用于存储接收机的系统软件。
  HY27U518S2CTR芯片划分为三个分区:第1分区(partition 1)为引导装载程序(loader)、第2分区(partition 2)为内核启动系统(boot)、第3分区(partition 3)为根文件系统(root),分配容量分别为:0.25MB、3.75MB、60MB。FLASH分区地址信息可以在系统启动过程中通过超级终端获取:   [4294669.867000] numchips=1, size=4000000
  [4294669.868000] Creating 4 MTD partitions on "bcm7xxx-nand.0":
  [4294669.869000] 0x0000000000000000-0x0000000004000000 :"complete"
  [4294669.873000] 0x0000000000000000-0x0000000000040000 :"loader" ……………………………………partition 1
  [4294669.874000] 0x0000000000040000-0 x 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 : " b o o t p a r t i t i o n "……………………………………partition 2
  [4294669.875000] 0x0000000000400000-0 x 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 : " r o o t p a r t i t i o n "……………………………………partition 3
  如果制作过DM800 se机器的固件(IMG),就知道IMG是由第二引导系统(secondstage,main.bin.gz)、启动(boot.jffs2)、根系统(root.jffs2)三个部分组成,图2所示的是《山水评测室》制作的DM800se G3-iCVS8#84B打造版固件的内部包,对应于上述的三个分区。
   DM800 se NAND FLASH芯片坏块检测
  对于DM800 se机器NAND FLASH芯片坏块检查,可以安装FLASH芯片检查插件检查出坏块、空块、填充块等数量(图3)。在FLASH芯片检查插件主界面,提供了mtd0整片、mtd1(secondstage loader)、mtd2(boot)、mtd3(root)四项检查内容(图4)。
  检查前,首先了解各个字符代码的注释:每一个坏块用一个“B”表示,每一个空块用一个“.”表示,每一个部分使用块用一个“-”表示,每一个全部使用块用一个“=”表示,具体如图5所示。
  下面,我们对采用DM800 se G3-iCVS8#84B打造版IMG的NAND FLASH芯片进行检查。
  1. mtd0整片检查
  执行mtd0检查整片,如图6所示。
  从图中可以看出:
  (1)一个典型的NAND FLASH都是由4096块(Block)组成,HY27U518S2CTR芯片每块大小是16384bytes(即16kB),容量合计:16384×4096=67108864(bytes),也就是67108864÷1024÷1024=64(MB)
  《山水评测室》提示:
  空闲区域并非真的“空闲”,它在物理上与其它页并没有区别。ECC、耗损均衡(Wear Leveling)、其它软件开销等很多额外的功能要依托于这部分空间来实现。换一句话说:对于一个页,0~511 bytes为主存储区,即通常所说的用户可设定地址区,用来存储数据;512~527共16 bytes为扩展存储区,用来存储页的信息。扩展区的16字节用于描述主存储区的512字节。而对于坏块,也仅仅是将这16字节的第6字节设置为不等于0xff,来标示坏块。
  2. mtd1引导系统检查
  执行mtd1检查,如图7所示。可以看出分配了16个块给第二引导系统(secondstage),分配容量为16×16=256(kB),即0.25MB,其中未使用5个块,已全部使用11个块,容量为16×11=176(kB),和制作的main. bin.gz(即secondstage84b.bin)容量176456÷024=175.25(kB)完全符合。
  3. mtd2启动系统检查
  执行mtd2检查,如图8所示。可以看出分配了240个块给启动系统(boot),分配容量容量为240×16=3840kB,即3.75MB,其中已全部使用145个块,已部分使用1个块,容量为16×145.5=2328(kB),和制作的boot.jffs2容量2382988÷024=2327.1(kB)完全符合。
  4. mtd3根系统检查
  执行mtd3检查,如图9所示。可以看出分配了3840个块给根系统(root),分配容量为3840×16=61440(kB),即60MB,具体固件使用容量不再分析了。
  5. 坏块检查
  我们收到一个用户的故障DM800 se机器,反映不能安装某些插件,运行不稳定。我们刷写同样的56MB容量的DM800 se G3-iCVS8#84B打造版固件,经过DCC-E2的【Memory Info】选项检查,故障机(图10a)的和《山水评测室》全新的打造版机器(图10b)的ROOT占用率分别为92%、89%。
  具体检查对比如图11~图16所示,其中(a)图为故障机界面,(b)图为正常机界面,可见故障机有很多坏块,而和全新打造版没有一个坏块(注:FLASH芯片末尾坏块是无需作统计的)。
  图中的第257块到第4096块分配给根系统(root),经统计,故障机一共显示8+31+10+44+14=107坏块,占用容量为107×16÷1024=1.7(MB),坏块占用率为1.7÷60=2.8%,因此故障机FLASH的root占用率=89%(固件空间占用率)+2.8%(坏块空间占用率),即显示已占用92%。   分区坏块导致DM800 se无法刷机的解决方法
  1. 由于分区坏块导致无法刷机
  当采用Web网页RJ-45网口刷写时,出现如图17所示的“too much data (or bad sectors) in ……”提示,表示分区3(partition 3)有坏扇区。
  当采用DreamUp软件USB虚拟串口在刷写时,如果DreamUp软件【Log】日志区域里显示类似如下提示:
  Log: +++ 006 verify failed, at 0003c000: e0. Block will be marked as bad.
  Flashing failed (!!! 005 too much data(or bad sectors) in partition 1 (end: 00040000, pos: 00040000)), box will be unusable now!!
  其意是:FLASH芯片分区1(partition 1)有太多的坏扇区,无法刷写。这些都是由于NAND FLASH芯片坏块引起的,因为坏了的块是无法擦除和写人数据的。
  2. 刷机方法
  对于NAND FLASH芯片坏块引起的刷机,如果还是想采用Web网页进行刷写,我们可以先进入机器的BIOS进行设置一下。
  在其中的Misc(杂项)设置界面中,显示DM800 se机器的一些杂项设置,如图18所示。
  其中的【Flash Sector Recovery】(闪存扇区恢复)选项,默认为禁用状态,当遇到因坏扇区而无法刷写软件时,可以启用该选项来解决。有时机器无法启动,也可以启用该选项试一试。
  如果采用DreamUp软件刷机,在刷写前,先点击DreamUp软件菜单栏的【Extras】(附加)功能,勾选“recover bad sectors”(恢复坏扇区)功能,如图19所示,再重新刷写一次就可解决。
  所谓“恢复坏扇区”,实际上就是使用相同的地址可以屏蔽掉坏了的块,而指针指向好块,也就是地址重映射,跳过坏块。
   DM800 se NAND FLASH芯片更换
  对于Dreambox高清机来讲,NAND FLASH芯片产生坏块的原因有多种,主要有以下一些因素:① NAND FLASH芯片质量差,寿命短,一些机器甚至采用二手的旧芯;②不正确的机器操作,如不正确的开关机,频繁地刷写有问题的固件,导致NAND FLASH芯片一些扇区或块的过分磨损、出现坏块;③芯片自然老化、接近生命周期规定的读写次数。
  对于NAND FLASH芯片出现少量的坏块,用户不必担心,因为DM800机器驱动在读写NAND FLASH芯片时,通常检测坏块,同时还在NAND驱动中加入坏块管理的功能,使得机器完全能够正常工作。
  不过NAND FLASH芯片过多的坏块,除了由此引发的数据丢失而工作不正常外,还会导致剩余容量减小,机器不能正常安装一些稍大容量的插件。一般机器运行时,ROOT占用率不能超过93%,即FLASH芯片剩余容量不低于4MB,否则,机器运行可能不稳定,易死机。对于FLASH芯片剩余容量,可以在【蓝色面板】下进入山水插件服务器,从下载页面左上角查看,如图20所示。
  坏块过多的NAND FLASH芯片建议更换,找到机器主板的NAND FLASH芯片(U703),用热风枪将它拆下(图21),更换一片全新的、带有DM800 se机器底层驱动的NAND FLASH芯片,更换完成后,需要重新刷写IMG。
其他文献
艾瑞咨询的最新统计数据显示,2012年,我国在线视频的用户规模已突破4亿大关,并将继续保持较快增长势头,2011年我国在线视频行业市场规模为62.7亿元。
本文探索采用体感设备Kinect,结合visual studio C++开发SLAM图形建模,使用Kinect传感设备对足部进行扫描,实现对足部的数据搜集,并利用SLAM软件对图像进行点云的拼接、曲面的重建新从而构建出足部三维模型,让人们能使用价格较低的Kinect装置就可以简便精确的获得足部三维模型。
直播卫星户户通用户管理系统是针对直播卫星户户通广播电视服务开发的一个集客户管理、系统管理和安全管理于一体的用户管理系统。
为巩固和扩大农村牧区保持共产党员先进性教育活动成果,进一步提高“三级联创”整体水平,开鲁县结合实际,全面深化以党员“三结合”致富链、三级干部服务链,推进农村牧区中心工作
在现实对敌徒手格斗或者自卫街斗中,我们面对的是穷凶极恶的敌人或歹徒,不可能像为了追求卖座率而胡编乱造的武打片那样的"百打不死"甚至是"大战三天三夜"。从军人的角度谈格
<正>~~
期刊
大战因伤终止,维塔利意外败北之后,拳击界对结局众说纷纭。赛后一周,克里奇科军团接受了媒体采访,对这一事件的前前后后给出了他们的详细看法。
2004年8月12日,一个与往常无异的晴和天气,却飘来了一块载着不满情绪的云朵。"垃圾、废物、糟粕,他们所有人都是渣滓!"这就是前世界冠军詹姆斯&#183;托尼在加利福尼亚贝弗利
【正】膀胱痉挛(bladder spasm,BS)是泌尿外科下尿路术后常见的并发症,不仅病人非常痛苦,而且延缓伤口愈合。目前对膀胱痉挛的治疗方法较多,如自控硬膜外镇痛,硬膜外腔注射吗
伴随着改革开放的春潮,1983年鄂尔多斯市审计机关成立,迄今已走过25年的风雨历程。25年来,在市委、市政府和自治区审计厅的正确领导下,鄂尔多斯审计队伍不断壮大。审计领域不断拓