初识flash芯片----写之前为什么要先擦除

虽然一开始工作就接触过flash芯片,但都是应用层次的接触,并没有直接接触到flash驱动。

直到最近要基于驱动接口直接操作flash芯片,才发现自己对它的使用特定一点都不了解。

先说一下自己的问题,原本打算对flash中的存储空间进行覆盖写,即写过数据后不擦除直接用新的数据进行覆盖。没想到验证的时候一直乱码,查了资料才知道,原来flash芯片不支持覆盖写,只能在擦除过的区域进行写操作,想要重写数据,必须进行擦除,而且擦除一般是按照扇区或者是块进行擦除。根本原因其实是flash芯片的写操作只能将1变为0,而不能将0变为1,擦除之后,flash中是全1的状态,若想将0变为1则只能通过擦除操作。所以严格来说不是不支持覆盖写,因为对于特定的数据(只要不涉及0变1)也可以进行覆盖写。

下面是一篇简单的介绍:

写flash时为什么需要先擦除?

Flash 的编程原理都是只能将 1 写为 0,而不能将 0 写为 1。所以在 Flash 编程之前,必须将对应的块擦除,而擦除的过程就是把所有位都写为 1 的过程,块内的所有字节变为 0xFF

存储器分为两大类:ram(内存:随机存储器)和rom(外存:程序存储器),分别存数据和程序。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值