打印

对不起,可能**错了。

[复制链接]
6442|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
minmindede|  楼主 | 2007-4-12 16:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
平常人| | 2007-4-12 16:51 | 只看该作者

不要用NAND Flash。你的应用根本不适合用NAND,还是用回NOR吧

NAND虽然便宜,但不是这样用的!

使用特权

评论回复
板凳
minmindede|  楼主 | 2007-4-12 17:06 | 只看该作者

楼上的兄弟,俺老大决定的。没法更改

俺们应用上,数据比较大,大概有32MByte 的空间。 老大为了成本,修改了方案,俺之前设计是用4片8M 的nor flash 拼起来的。
老大嫌太贵了。 

使用特权

评论回复
地板
djyos| | 2007-4-12 17:57 | 只看该作者

有变通方法的

flash的特点是:写入时,1可以改为0,但0是不能改为1的.
只有擦除可以把0改为1.
灵活利用这个特点可以减少擦除的次数,节省cpu时间还可以延长flash寿命.只是,万一哪天flash工艺改变了这个特性,就麻烦了.

使用特权

评论回复
5
mohanwei| | 2007-4-12 18:26 | 只看该作者

有没有考虑过缓存的方法?

如果要频繁操作,先把参数放在RAM里,直到有必要(掉电、缓存满……)才写一下……

使用特权

评论回复
6
minmindede|  楼主 | 2007-4-12 19:12 | 只看该作者

考虑过,这个是我目前想到的方法,

来这里看看各位有没有其他的办法。 缓存不可能放很大,一个BLOCK 就差不多了, 这样要是涉及到跨BLOCK的时候,就要把上一个BLOCK写进去,好像处理起来有点烦琐。

使用特权

评论回复
7
eleven11| | 2007-4-12 19:36 | 只看该作者

re:有变通方法的

这种听上去不错,但实际上可行性是很低的。lz因该需要的是一个单独的转换层,还需要写平衡,坏块管理等机制吧,很麻烦的,推荐去买一个高手写的ftl

使用特权

评论回复
8
567| | 2007-4-12 20:01 | 只看该作者

速度不会慢,浪费一些空间而已

该128KB块仅用于保存参数,虽然只占用了几个字节。
改写的时候不必重写整个块,只写需要修改的即可。

擦除nand的128KB的块,不会比擦除nor的一个扇区慢的。擦除区块所需时间约为2ms。一旦数据被载入寄存器,对一个页的编程大约要300μs。读一个页面需要大约25μs。

使用特权

评论回复
9
567| | 2007-4-12 20:03 | 只看该作者

考虑到nand的坏扇区问题,最好加一些校验措施

使用特权

评论回复
10
平常人| | 2007-4-12 22:02 | 只看该作者

32MB和64MB的NAND Flash有32KB/块

32KB/块的NAND称为小页结构,但现在只有少数几家公司还在生产。128KB/块的NAND称为大页结构,目前所有生产NAND的厂家都有生产,是主力产品线。

另外你可以考虑串行Flash,不比NAND贵太多。

5楼的办法最好,可以用RAM也可以用一个EEPROM等。4楼的办法最好不要用,因为数据手册上不支持这种操作。9楼说的问题也要注意。

使用特权

评论回复
11
xzm0662| | 2007-4-12 22:31 | 只看该作者

用sd卡得了,支持spi操作,512B扇区

使用特权

评论回复
12
平常人| | 2007-4-12 22:35 | 只看该作者

SD卡里面用的就是32KB/块的小页NAND,价钱不比NOR Flash低吧?

而且还要用SPI操作,速度上也慢。当然若能做到四线的SD卡读写,速度上还过得去了,但操作还是麻烦。

使用特权

评论回复
13
xzm0662| | 2007-4-12 23:00 | 只看该作者

sd卡,mmc卡都是含控制器的。里面什么样子我不管

反正可以按照512B写扇区

使用特权

评论回复
14
high| | 2007-4-13 00:33 | 只看该作者

13楼是对的.我用过的是这样.

不过nand flash的操作的最小单位根本不是block.是sector. 主流现在是2k左右吧.

使用特权

评论回复
15
minmindede|  楼主 | 2007-4-13 09:54 | 只看该作者

8楼的兄弟。我128k全部用到了,

比方存 了 2.3k 一块的参数。我128K存了大概是60块参数,每块内的每个参数都有可能修改,这样其实所有的空间都需要备份保留下来的。 
    至于14楼兄弟说的是SECTOR,俺看datasheet好像不是,俺看到是擦除只能用BLOCK 擦除。 其实我的理解,最小擦除的大小决定了最小操作单位。 虽然在没有数据之前我可以一个PAGE 的写,但是一旦涉及到我要修改之前的参数就一定要先擦除。 俺还是回去看看DATASHEET先,万一出错了就逑了。
   谢谢兄弟们的讨论

使用特权

评论回复
16
minmindede|  楼主 | 2007-4-13 15:14 | 只看该作者

发个图来看看 nandflash的结构

High 说的SECTOR 愣是没有看到。在datasheet里面查找都没有。 看来不对!

使用特权

评论回复
17
minmindede|  楼主 | 2007-4-13 15:50 | 只看该作者

等待更多人的参与帮助!

使用特权

评论回复
18
eleven11| | 2007-4-13 16:21 | 只看该作者

sd,cf卡内已经集成了控制器

所以底层的写平衡(有的已经固化),缓存数据,你都已经不需要关心了,但是我还是劝lz去买一个高手写的nandflash转换层,自己开发难度很大,真的,你总的还需要设计写平衡,坏块管理,调电保护等等吧

使用特权

评论回复
19
high| | 2007-4-13 17:16 | 只看该作者

对不起,可能**错了。

最小单位是page,但是erase的最小单位好像是block.

那就用sd卡吧 or tflash卡

使用特权

评论回复
20
平常人| | 2007-4-13 21:18 | 只看该作者

看看小页的NAND Flash是什么样的

19楼说的不完全对,读写的最小单位可以是字节,但擦除的最小单位是Block。

小页结构的NAND最小擦除单位是32页16K字节,每页是512+16字节。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

81

帖子

0

粉丝