Flash编程原理都是只能将1(默认为1)写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程。编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.
闪存将数据存储在由浮闸晶体管组成的**单元数组内,在单阶存储单元(Single-level cell, SLC)设备中,每个单元只存储1比特的信息。而多阶存储单元(Multi-level cell, MLC)设备则利用多种电荷值的控制让每个单元可以存储1比特以上的数据。
单层 Flash单元在默认状态代表二进制码中的“1”值。
闪存的一种限制在于即使它可以单一字节的方式读或写入,但是抹除一定是一整个区块。一般来说都是设置某一区中的所有比特为“1”,刚开始区块内的所有部分都可以写入,然而当有任何一个比特被设为“0”时,就只能借由清除整个区块来恢复“1”的状态。(即只能把1写0,不能把0写1,要把0写1只能通过檫除flash置1,然后从新写0)。 |