Garyyin
驱动牛犊
驱动牛犊
  • 注册日期2007-05-07
  • 最后登录2009-11-04
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:2021回复:4

NAND Flash驱动疑问

楼主#
更多 发布于:2007-05-31 22:24
最近自己在开发板上做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,写入时起始地址会往左偏移一个字节,且最后一个值会重复写一次,相当奇怪的问题,请驱动高手指点一下。
GoodOnline
驱动小牛
驱动小牛
  • 注册日期2007-04-11
  • 最后登录2009-02-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望204点
  • 贡献值0点
  • 好评度191点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-06-01 12:00
把不要改变的数据保存起来后再重新写入

00 01 02 03 04

想把04改为05,应写入
00 01 02 03 05
GoodOnline
驱动小牛
驱动小牛
  • 注册日期2007-04-11
  • 最后登录2009-02-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望204点
  • 贡献值0点
  • 好评度191点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-01 12:08
Nand flash 是
先查察除(0xff)后写入的
Garyyin
驱动牛犊
驱动牛犊
  • 注册日期2007-05-07
  • 最后登录2009-11-04
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-06-01 12:26
以上过程中每次program前先对那个page所在的block进行了擦除操作啊,也就是说上面所说的几次program操作是在那个block中内容全为0xFF的情况下进行的,我看过datasheet,Flash芯片内部的控制器自己会确定一个page内那些data需修改的。这个问题只在page内地址偏移不为0的时候出现,还没搞清楚为什么...
ttjlc
驱动牛犊
驱动牛犊
  • 注册日期2003-07-16
  • 最后登录2008-08-12
  • 粉丝0
  • 关注0
  • 积分182分
  • 威望21点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-08-18 09:33
如果是16bit模式,起始地址必须为两字节对齐,如果要修改一个sector部分内容的话,正确的做法就是先将指定sector内容读出来,只修改要修改的部分内容,然后再将整个扇区的内容更新,这是基本常识.
游客

返回顶部