阅读:2021回复:4
NAND Flash驱动疑问
最近自己在开发板上做Nand Flash驱动,Flash用的是K9F5608U0D,(512 + 16)字节的Page,基本操作都没问题了,但是测试中发现了一个很奇怪的问题,就是在进行page programm时,现将此page所在的BLOCK擦除后,想写0x00到0x09十个数字到此page中,
若从该page的0x00地址开始programm,很正常:00 01 02 03 04 05 06 07 08 09 FF FF FF FF... 若从0x01地址开始programm,则成为: 00 01 02 03 04 05 06 07 08 09 09 FF FF FF... 若从0x02地址开始programm,则成为: FF 00 01 02 03 04 05 06 07 08 09 09 FF FF FF... 若从0x03地址开始programm,则成为: FF FF 00 01 02 03 04 05 06 07 08 09 09 FF FF... 只要地址偏移量不为0,写入时起始地址会往左偏移一个字节,且最后一个值会重复写一次,相当奇怪的问题,请驱动高手指点一下。 |
|
沙发#
发布于:2007-06-01 12:00
把不要改变的数据保存起来后再重新写入
00 01 02 03 04 想把04改为05,应写入 00 01 02 03 05 |
|
板凳#
发布于:2007-06-01 12:08
Nand flash 是
先查察除(0xff)后写入的 |
|
地板#
发布于:2007-06-01 12:26
以上过程中每次program前先对那个page所在的block进行了擦除操作啊,也就是说上面所说的几次program操作是在那个block中内容全为0xFF的情况下进行的,我看过datasheet,Flash芯片内部的控制器自己会确定一个page内那些data需修改的。这个问题只在page内地址偏移不为0的时候出现,还没搞清楚为什么...
|
|
地下室#
发布于:2007-08-18 09:33
如果是16bit模式,起始地址必须为两字节对齐,如果要修改一个sector部分内容的话,正确的做法就是先将指定sector内容读出来,只修改要修改的部分内容,然后再将整个扇区的内容更新,这是基本常识.
|
|