该非典用法基于Flash的存储机制,可能众多老鸟都很清楚,这里介绍给更广大的菜鸟,在设计的时候也好多一种思路。已经用于俺的一个小项目了。
即:Flash表面上看来,写的时候只能以字节为单位进行,且某字节写了以后如果不进行擦除操作无法第二次写,否则会出错。 这是通常大家都知道的。
但是深究到Flash的存储根本机制上,我们就会发现,其实Flash还是可以实现“位操作”的。
因为Flash的擦除操作时将所有为置1,而写操作只能将1置0,而无法将0置1。前面说的二次写如会出现数据错误,就出现在如果第一次写的数某一位为0,而第二次要写的数该位为1,则二次写入无法将该位的0变为1,这是出错的根源。
这种非典用法就是利用写Flash的这种特点。比如第一次写入:
0x1111 1110,第二次写入:
0x1111 1100。第三次以此类推……
各位看官可看懂了?
方法是这个方法,至于如何应用,大家尽可发挥想象 ~
之前我用这种方法存储一个每次递增1的变量。是不是像一种新颖的数字编码方式?只不过一个字节只能代表8个编码。 |