linux nand 坏块_NAND坏块的处理

自己从第一次接触

Nandflash

到现在也有将近两年的时间了,从刚开始的无从下手到现在的略知一二。

回过头来看自己的学习历程,

积累了很多无论你如何

Google

和泡坛子都学习不到的经验。

现在拿出来分享

给大伙,算是对集体智慧的一种回馈吧。

首先说一下

Nandflash

本身的一些缺陷和优势:

优势:

1

,速度快。这个貌似没啥可说的,对于现在动辄上

G

的芯片容量,速度是必要的基础。

2

,便宜。虽然赶不上硬盘,但是在嵌入式设备里面绝对是性价比杠杠的。

3

,没了。除了傻快傻便宜,真没嘛优势。

劣势:

1

,可靠性不高。这里所说的可靠性分为两个方面,第一是芯片出厂的时候就伴随着一定概率的缺陷。你们

懂得,我说的是坏块。这个缺陷会令很多初入此行的孩纸们丢掉工作,后面会详细说。第二个是芯片使用

过程中的不稳定,当然还是在说会产生坏块的问题。。。

2

,不能片上运行程序。由于无法直接寻址,所以就不可能做到片上运行程序。这是很多网络上文章经常提

到的一点,实际上对生活影响不大。因为现在内存便宜的很,一般的家用嵌入式设备对内存没有这么苛刻

的要求。

3

,芯片操作复杂。不同于

norflash

nandflash

没有这么容易操作。我说的操作主要是指不通过驱动程序

直接靠编程完成对于

flash

的存取。

但是我还是要说上面的话:

实际上对于生活影响不大。

因为目前大部分

的民用嵌入式设备都有操作系统,一般为

linux

linux

flash

设备提供了

mtd

驱动层,我们对于

flash

操作都被抽象成了统一的接口甚至是设备符号,无需关心底层实现。

下面来说说实际使用时候的一些心得体会:

一,什么样

nandflash

分区大小是合理的?

考虑到业务的需要,一般我们不会将整个芯片完全当作一个整体来使用。就如同你使用电脑的时候不会只

给硬盘分一个区一样。主要是为了防止对分区进行改动或者重新烧录的时候会丢失全部的数据。

而如何分区才是合理的呢?我归纳主要有以下几点需要注意:

1

,任意一个分区的大小不要超过操作系统所能操作内存的

2/3

。比如你有

128M

内存,

linux

可以支配其中

96M

,那请不要将

nandflash

的分区设计为大于

64M

这样的考虑主要是因为,如果未来你需要升级这个分区,尤其是通过网络升级这个分区。如果你的升级方

式不是增量式的,

那么你必须有一段与

flash

分区大小一致内存空间用来存放镜像。

这个时候假设你的

flash

分区为

96M

,那么你将不可能完成更新。因为你没有足够的内存空间。除非实时解压缩实时烧录,风险很

高。

2

分区一定要给坏块留出足够的空间。

我最早接触到

nandflash

的时候就犯了这个错误,

uboot

大小

200k

我给它划分的空间为

256k

,结果遭遇坏块,上下移动都没有空间,非常杯具。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值