关于Nor和Nand操作的疑问,请大神指点一下,谢谢

wLiu2007 2018-05-03 06:53:01

通过网上的一些资料,了解到无论是Nor还是Nand,在写入之前都要先erase擦除,我对这个有点疑惑:
1,下图是nor 的操作指令,如果我只想修改某一个byte的内容,我只需要执行word-program这个吗?按照写入必须先擦除的说法,是不是要先执行sector-erase,然后在执行word-program?


2,nor写入和擦除的最小单位是什么?byte还是sector?

3,对于nand寻址,在计算page_addr和column地址时,会用到PageSize这个东西:
page_addr = addr / pDevice->PageSize;
column = addr & (pDevice->PageSize - 1);
想问一下这个pagesize有没有算上oob的长度,比如1 page = 2048 byte data + 16 byte OOB时,公式里面的PageSize应该是2048还是2064?
...全文
747 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wLiu2007 2018-05-04
  • 打赏
  • 举报
回复
谢谢答复! 关于第3个问题,nand addr能讲的再详细点吗,谢谢!
of123 2018-05-04
  • 打赏
  • 举报
回复
1,下图是nor 的操作指令,如果我只想修改某一个byte的内容,我只需要执行word-program这个吗?按照写入必须先擦除的说法,是不是要先执行sector-erase,然后在执行word-program? NOR Flash 是允许多次写的。只要你将要写入的位置没有写过,你就可以写。还有一种用法,是就是利用比特位图。因为所谓写,就是将比特“1”变为比特“0”。你即使对已经写过的 word 覆盖写,也仅仅是使新增的 0 生效。 所以,你既可以在擦除过一个 sector (页)之后,一次一个 word 地去写,也可以一次一个 bit 地去写。 记住,擦是使整个 sector 所有比特变为 1;写是将一个 word 内某些位变为 0(已经是 0 的无法“写”回 1)。 2,nor写入和擦除的最小单位是什么?byte还是sector? 擦除的单位是 sector(页)。写的最小单位这个概念很难定义。首先,既然是 word_program,就必然是字对齐的。但你可以字节写:在字中将当前不写的字节设置为 FF;也可以是比特写,将字中当前不写的比特设置为 1。当然,如果那些字节或比特之前就是全 0 了,写什么就无所谓了。 3,对于nand寻址,在计算page_addr和column地址时,会用到PageSize这个东西: page_addr = addr / pDevice->PageSize; column = addr & (pDevice->PageSize - 1); 想问一下这个pagesize有没有算上oob的长度,比如1 page = 2048 byte data + 16 byte OOB时,公式里面的PageSize应该是2048还是2064? 取决于你的 addr 是怎么定义的。

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧