NAND FLASH编程器_NAND FLASH烧录器

SUPERPRO5000是西尔特出品的新一代USB接口独立式智能极速NAND FLASH编程器.具有编程速度快,烧录稳定,软件集成度高,更智能化的特点。是NAND Flash用户理想的选择。
        SUPERPRO5000除了支持算法集成的三个坏块处理方法外,还可以为客户选择定制其他的烧录方法(比如三星平台,高通平台,博通平台, WinCE 烧录等)。算法本生支持ecc512B(Hamming Code),并且支持生成的ecc码在spare区任意连续地址map。算法本生还支持NAND Boot区的只读属性处理,一般表现为Bad block Mark前的OEMReserved的处理。
        SUPERPRO5000烧录每64Mbytes仅需80秒,部分芯片时间甚至小于60秒。其中烧录过程包括Erase + Program + Verify.

关于NAND Flash

NAND FLASH是一种易失的闪存技术,被广泛使用于U盘,MP3/MP4,GPS,PDA,GSM/3G手机,无线上网设备,笔记本等多个领域。NAND是高数据存储密度的理想解决方案。

和NOR FLASH相比。NAND FLASH具有以下的特点:

1) NAND FLASH同NOR FLASH相比,NAND FLASH有着容量大、价格低等优势。
2)存在坏块。由于NAND生产工艺的原因,出厂芯片中会随机出现坏块。坏块在出厂时已经被初始化,并在特殊区域中标记为不可用,在使用过程中如果出现坏块,也需要进行标记。
3) 易出现位反转。NAND FLASH更易出现位反转的现象,如果位反转出现在关键文件上,会导致系统挂机。所以在使用NAND FLASH的同时,建议使用ECC/EDC算法确保可靠性。 
4) 存在Spare区。正因为NAND FLASH有着上面的两项特殊的地方,Spare区就扮演作存放坏块标志,ECC值以及芯片信息和文件信息的作用。
5) 多维的空间结构。NAND FLASH一般由block,page,sector等结构组成。所以在有的文件系统中就衍生出各种分区信息和扇区信息等。

SUPERPRO5000下对NAND FLASH 的坏块处理

NAND FLASH的坏块处理方式有很多,不同的方案公司或者系统提供商都会选择不同的坏块处理方法,来满足产品开发的需要,目前我们公司已经根据客户的要求,解决了近百种的坏块处理方案。并且将常用的三种坏块处理方案,集成到烧录算法里面。
  本文档以K9F1208U0B为例,详细阐述了SUPERPRO5000下NAND FLASH的烧录方法。

1.NAND FLASH编程器烧录软件概述。

选择好K9F1208U0B后,将出现下图(Figure 1)。

(Figure 1)
Device Information中,提示(1)提供了该芯片使用何种适配器。提示(2)简明扼要的讲述了本软件支持坏块处理方法的种类和技术要点。
下图是主软件界面(Figure 2)

在主软件界面中,提示1列出了NAND烧录拥有的正常操作, 从上到下包括:自动批处理(Auto),编程写入(Program),读出数据(Read),校验(Verify),空检查(Blank_Check),擦除(Erase),启动代码块检查(Boot Block Check)。
  其中自动批处理(Auto)必须在提示4(Edit Auto)中设置好才能运行。启动代码块检查(Boot Block Check)在提示2中设置启动代码所占块(Blocks)的范围。
  提示2(Dev.Config)是NAND Flash烧录的配置中心,坏块处理方法,ECC,设置烧录范围,启动代码范围等的设置都在这个选项里面。
  提示3是烧录软件的信息输出区,算法的有关信息,烧录过程的有关信息和烧录出错信息都在这个区域打印输出。

2.NAND Flash 的坏块和坏块标志。

由于制造工艺的原因,NAND Flash 在生产过程中可能会产生坏块,坏块在出厂前将会被标记。对于坏块而言,存储的信息可能会丢失,不能正常使用。另外在NAND Flash擦除或者编程过程中,出现操作失败后,表示该块不能正常使用,也应标记成坏块。所以在一般情况下,在操作NAND Flash之前,先要检查一下要操作的是否是坏块,以免坏块标记被破坏。此外,为了保证存储信息的可靠性,从NAND Flash中读取的数据还可以引入ECC校验,ECC码一般存放在该页的spare区。关于ECC,详细介绍见下一章。
  小页模式的NAND Flash(8bit)的坏块标志(BM)一般放在每个block第一页和第二页的第6个字节。
  Spare区:

0

1

2

3

4

BM

6

7

8

9

10

11

12

13

14

15

小页模式的NAND Flash(16bit)的坏块标志(BM)一般放在每个block第一页和第二页的第1个字(双字节)。

Spare区:

BM

1

2

3

4

5

6

大页模式的NAND Flash(8bit)的坏块标志(BM)一般放在每个block第一页和第二页的第1个字节。

Spare区:

BM

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

大页模式的NAND Flash(16bit)的坏块标志(BM)一般放在每个block第一页和第二页的第1个字(双字节)。
  Spare区:

BM

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

一般情况下坏块标志(BM)处为0xFF或者0xFFFF表示好块,非0xFF或者0xFFFF代表坏块。
  小页模式的NAND Flash(8bit)的坏块标志(BM)处会出现下面的情况。我们在总结多个厂商的要求后也把它作为一种坏块标志进行了集成化处理。
   Spare区:

0

1

2

3

OEM
Reserved

BM

6

7

8

9

10

11

12

13

14

15

其中OEM Reserved 标志:为OEM 系统保留块(比如NBOOT,TOC,EBOOT使用),一般可以对外界表示这段代码区为只读属性。
  BM标志:为0x00当前块为坏块,为0xFF, 当前块为好块,但如果此时的OEM Reserved标志处为设定的值的话,此处BM标志为0x00,在烧录过程中做好块。此设置在器件配置字中如下(Figure 3):
  如图,表示OEM Reserved的值为0xFC,在这种设置下,当判断到BM标志为0x00时,前面的OEM Reserved的值读出为0xFC时,在烧录过程中判断其为好块。

3.常用的三种坏块处理方法

A) 跳过坏块 (Skip bad block)。


(Figure 4)

这是一种最常用的坏块处理方法。它的实现原理比较简单,顺序烧录,发现某一块为坏块后,将相应数据烧录到下有个好块,如果发现连续的坏块的话,也连续的跳过这些坏块,并把数据烧录的下一个出现的好块中。其原理如下图(Figure 5)。

采用这种烧录方法,要关注提示2的设置,以便对NAND的存储区域进行更灵活的访问。
  其中UBA start blk(hex): 指定文件从那个块开始烧录,Size of UBA blks(hex): 的内容表示烧录的文件占用多少个好块,例如:烧录芯片K9F1208U0B,烧录的文件包含spare区的内容。烧录文件的大小为19M整,烧录的起始块为第0块。K9F1208U0B为小页模式的NAND,每个块包含spare区的大小为0x4200Bytes = 16896(dec)Bytes。那么要烧写的block = 19*1024*1024/16896 = 1179.15,取整为1180(dec) = 0x49C.所以UBA start blk(hex): 0000, Size of UBA blks(hex): 0x49C。
  注:如果小页模式不包含spare区的内容,则每个块的大小为0x4000Bytes. 大页模式包含spare区的内容,每个块的大小为0x21000Bytes,大页模式不包含spare区的内容,每个块的大小为0x20000.
  采用这种烧录方法的话,坏块标志位是不允许写成非“0xFF”或者“0xFFFF”(16bit),所以在缓冲区(buffer)中的数据,在烧录过程中,坏块标志为都被强制改写0xFF或者0xFFFF。 具有OEM Reserved值的情况下,如果坏块标志的处的值满足其判断要求,将不作强制修改。
B) 硬拷贝 (Hard Copy)。

  Hard Copy的方法在读写过程中,没有判断坏块,而是把它当成一般的Flash进行处理的。但在烧写过程,由于坏块的存在,导致对应的数据无法烧写进去,所以在一般情况下,我们不推荐使用这种方式烧写NANDFLASH。
  不过在读取芯片(母片)的时候,有时候我们并不清楚该芯片的坏块标志位是不是被改变,不清楚该芯片用的是什么坏块处理方法,我们还是推荐采用这种方法读芯片内容。这种方法可以读出芯片的完全内容,以便进行下一步分析,或者直接拷贝。在读取芯片完全内容时,例如读取芯片K9F1208U0B,该芯片共有4096(0x1000)个block。那么在器件配置字中要设置Size of UBA blks(hex) : 1000 。这样读取的时候就把所有块的内容读出来。
  用这种方法之间拷贝芯片的时候,要尽量确保目标的芯片是没有坏块的芯片,才能保证拷贝的成功率。

NAND FLASH编程器烧录详解相关推荐

  1. nand flash的读操作详解

    这篇文章不是介绍 nandflash的物理结构和关于nandflash的一些基本知识的.你需要至少了解 你手上的 nand flash的物理结构和一些诸如读写命令 操作的大概印象,你至少也需要看过 s ...

  2. Visual C++网络编程经典案例详解 第9章 实用播放器 数据读取与播放控制 识别数据文件信息

    识别数据文件信息主要是指对mp3数据格式识别 定义顺序代码如下 typedef struct mp3_struct //自定义mp3结构体 {char heade[3]; //tag字符标记char ...

  3. AS608光学指纹模组编程和应用详解

    AS608光学指纹模组编程和应用详解 一.前言 上次讲解了两个简单实用的传感器,反馈很多,能够帮助到大家,我也很开心.所以今天继续给大家介绍一个实用易上手的传感器,在这里有些同学可能就会质疑了,指纹识 ...

  4. python如何制作脚本_用python给自己做一款小说阅读器过程详解

    前言 前一段时间书荒的时候,在喜马拉雅APP发现一个主播播讲的小说-大王饶命.听起来感觉很好笑,挺有意思的,但是只有前200张是免费的,后面就要收费.一章两毛钱,本来是想要买一下,发现说的进度比较慢而 ...

  5. Java并发编程最佳实例详解系列

    Java并发编程最佳实例详解系列: Java并发编程(一)线程定义.状态和属性 Java并发编程(一)线程定义.状态和属性 线程是指程序在执行过程中,能够执行程序代码的一个执行单元.在java语言中, ...

  6. Java编程配置思路详解

    Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...

  7. Lesson 8.1Lesson 8.2 决策树的核心思想与建模流程CART分类树的建模流程与sklearn评估器参数详解

    Lesson 8.1 决策树的核心思想与建模流程 从本节课开始,我们将介绍经典机器学习领域中最重要的一类有监督学习算法--树模型(决策树). 可此前的聚类算法类似,树模型也同样不是一个模型,而是一类模 ...

  8. oracle分区表编程,Oracle分区表详解

    当前位置:我的异常网» 编程 » Oracle分区表详解 Oracle分区表详解 www.myexceptions.net  网友分享于:2013-10-28  浏览:25次 Oracle分区表详解 ...

  9. java 可见性_Java并发编程-volatile可见性详解

    前言 要学习好Java的多线程,就一定得对volatile关键字的作用机制了熟于胸.最近博主看了大量关于volatile的相关博客,对其有了一点初步的理解和认识,下面通过自己的话叙述整理一遍. 有什么 ...

最新文章

  1. java创建数组大小为n_如何通过提供大小在Kotlin中创建一个像Java一样的数组?
  2. 利用NCO 3.0 调用SAP中的函数
  3. Unity面试题精选(7)
  4. 显示器信号接口的发展历程
  5. WPF 微信 MVVM 【续】发送部分QQ表情
  6. java中关于x轴翻转和y轴翻转如何计算_如何避免这8个常见的深度学习/计算机视觉错误?
  7. PHP Sessions
  8. Ubuntu安装时出现“failed to load ldlinux.c32”[已解决]
  9. 几款移动跨平台App开发框架比较
  10. 500个爆文标题_爆文标题创作思路——来自100个10W+的标题的总结
  11. verilogVGA显示太极图案
  12. 关于逆向工程,解决mysql数据库遇到的1406问题,ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'
  13. 中基鸿业家庭理财注意事项
  14. HDU2072(单词数)
  15. 优秀的 Verilog/FPGA开源项目介绍(二十一)- 卷积神经网络(CNN)
  16. 电脑数据迁移高招,怎么把旧电脑的数据迁移到新电脑
  17. 运筹学 —线性规划总结
  18. CANOE入门:CAPL语言实现诊断发送和接收
  19. Ipopt with Metis编译指南
  20. 《令人心动的offer2》--你心动了吗?

热门文章

  1. java客户端带证书访问服务端_客户端与服务器SSL双向认证(客户端:java-服务端:java)...
  2. 2013-10 阿丹励志笔记(1)
  3. iphone文件app里无法连接服务器,苹果商店怎么打不开 无法连接到app store解决方法...
  4. 你不知道的手动变速箱:换挡杆下的玄机
  5. 一滴水泛起行业波纹,惠民保给保险业带来的启示录
  6. 通用方法 关闭Outlook最小化非直接退出
  7. 打开Excel文件,表名为Sheet1$或'TS-X'$
  8. VS2019中,解决“错误CS0006:未能找到元数据文件”
  9. MBA-day30 算术 绝对值题型
  10. matlab示波器导出图片,MATLAB SIMULINK 示波器 SCOPE 图片保存