对不起,可能**错了。

[复制链接]
7764|34
 楼主| minmindede 发表于 2007-4-12 16:47 | 显示全部楼层 |阅读模式
如果俺的的几个参数存在这个BLOCK内,128kB&nbsp;一个块。&nbsp;要修改几个参数,就要把128k全部读出来,让后写回去。这样<br />1&nbsp;是太笨了,2是速度慢,为了改1~2个字节,要写128k。<br />&nbsp;&nbsp;&nbsp;之前的Nor&nbsp;FLASH&nbsp;好用,一个SECTOR&nbsp;2K,用起来比这个顺手。&nbsp;我擦除一个2kB&nbsp;的sector就可以了。<br /><br />大家有什么主意?
平常人 发表于 2007-4-12 16:51 | 显示全部楼层

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

NAND虽然便宜,但不是这样用的!
 楼主| minmindede 发表于 2007-4-12 17:06 | 显示全部楼层

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

俺们应用上,数据比较大,大概有32MByte&nbsp;的空间。&nbsp;老大为了成本,修改了方案,俺之前设计是用4片8M&nbsp;的nor&nbsp;flash&nbsp;拼起来的。<br />老大嫌太贵了。&nbsp;
djyos 发表于 2007-4-12 17:57 | 显示全部楼层

有变通方法的

flash的特点是:写入时,1可以改为0,但0是不能改为1的.<br />只有擦除可以把0改为1.<br />灵活利用这个特点可以减少擦除的次数,节省cpu时间还可以延长flash寿命.只是,万一哪天flash工艺改变了这个特性,就麻烦了.
mohanwei 发表于 2007-4-12 18:26 | 显示全部楼层

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

如果要频繁操作,先把参数放在RAM里,直到有必要(掉电、缓存满……)才写一下……
 楼主| minmindede 发表于 2007-4-12 19:12 | 显示全部楼层

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

来这里看看各位有没有其他的办法。&nbsp;缓存不可能放很大,一个BLOCK&nbsp;就差不多了,&nbsp;这样要是涉及到跨BLOCK的时候,就要把上一个BLOCK写进去,好像处理起来有点烦琐。
eleven11 发表于 2007-4-12 19:36 | 显示全部楼层

re:有变通方法的

这种听上去不错,但实际上可行性是很低的。lz因该需要的是一个单独的转换层,还需要写平衡,坏块管理等机制吧,很麻烦的,推荐去买一个高手写的ftl
567 发表于 2007-4-12 20:01 | 显示全部楼层

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

该128KB块仅用于保存参数,虽然只占用了几个字节。<br />改写的时候不必重写整个块,只写需要修改的即可。<br /><br />擦除nand的128KB的块,不会比擦除nor的一个扇区慢的。擦除区块所需时间约为2ms。一旦数据被载入寄存器,对一个页的编程大约要300μs。读一个页面需要大约25μs。
567 发表于 2007-4-12 20:03 | 显示全部楼层

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

  
平常人 发表于 2007-4-12 22:02 | 显示全部楼层

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

32KB/块的NAND称为小页结构,但现在只有少数几家公司还在生产。128KB/块的NAND称为大页结构,目前所有生产NAND的厂家都有生产,是主力产品线。<br /><br />另外你可以考虑串行Flash,不比NAND贵太多。<br /><br />5楼的办法最好,可以用RAM也可以用一个EEPROM等。4楼的办法最好不要用,因为数据手册上不支持这种操作。9楼说的问题也要注意。
xzm0662 发表于 2007-4-12 22:31 | 显示全部楼层

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

  
平常人 发表于 2007-4-12 22:35 | 显示全部楼层

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

而且还要用SPI操作,速度上也慢。当然若能做到四线的SD卡读写,速度上还过得去了,但操作还是麻烦。
xzm0662 发表于 2007-4-12 23:00 | 显示全部楼层

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

反正可以按照512B写扇区
high 发表于 2007-4-13 00:33 | 显示全部楼层

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

不过nand&nbsp;flash的操作的最小单位根本不是block.是sector.&nbsp;主流现在是2k左右吧.
 楼主| minmindede 发表于 2007-4-13 09:54 | 显示全部楼层

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

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

发个图来看看 nandflash的结构

High&nbsp;说的SECTOR&nbsp;愣是没有看到。在datasheet里面查找都没有。&nbsp;看来不对!
 楼主| minmindede 发表于 2007-4-13 15:50 | 显示全部楼层

等待更多人的参与帮助!

  
eleven11 发表于 2007-4-13 16:21 | 显示全部楼层

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

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

对不起,可能**错了。

最小单位是page,但是erase的最小单位好像是block.<br /><br />那就用sd卡吧&nbsp;or&nbsp;tflash卡
平常人 发表于 2007-4-13 21:18 | 显示全部楼层

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

19楼说的不完全对,读写的最小单位可以是字节,但擦除的最小单位是Block。<br /><br />小页结构的NAND最小擦除单位是32页16K字节,每页是512+16字节。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

81

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部