个人理解:从底层操作来看,最小写单元是字节,但是Flash的最小管理单元是页;
一、例子1:
写:以GD5F4G的Flash存储芯片来说,当只想改变flash某一页的某一个字节地址中的数据时,只需要执行以下几个步骤,将发送数据到Flash的cache中:
(1)发送写指令。
(2)将这一个字节地址在这一页的地址偏移量发送给Flash的cache。
(3)发送要写入flash的数据。
(4)发送你要操作的第几页。
只需要三步就可以将数据写入flash某一页的某一个字节地址中了,前提是这个地址的数据已经被擦除了。所以可以看出,从第(2)(3)步来看,实际最小允许写入的单元为字节,从第(4)步来看,Flash最小操作单元是页。
读:支持跨页读。
二、例子2:以W25Q128的Flash存储芯片来说,当只想改变flash某一页的某一个字节地址中的数据时,需要执行以下几个步骤:
(1)发送写页指令。
(2)发送开始写入的地址,注意,该地址是flash里面的绝对地址。不是例子1中的在页中的偏移地址,所以无需再操作例子1中的第4步。
(3)循环写入更新数据。
所以可以看出,从第(2)(3)步来看,实际最小允许写入的单元为字节,从第(1)步来看,Flash最小操作单元是页。
读:不支持跨页读。
但有个注意的地方就是:两个例子都绝不允许跨页写。