【发布时间】:2021-07-06 05:33:50
【问题描述】:
我想在我的微控制器固件中实现一个简单的堆栈。 我想实现的堆栈就像this,即标准的东西。
问题是我使用的闪存 IC 支持页面粒度进行写入,但支持扇区粒度进行擦除,就像任何其他 NAND 闪存一样,在闪存上写入一些数据之前,您应该擦除该部分。
作为总结,我擦除了一个扇区并在其第一页上写入了一些数据。为了重写该页面的一个字节,我应该先擦除整个扇区。
在我的堆栈中,
| ○ | ○ | ○ | ○ | ○ |哦|
我推送一些数据:
| W | W | W | ○ | ○ |哦|
然后弹出其中一个:
| W | W |磷 | ○ | ○ |哦|
现在我想推送另一个数据。这里问题出现了。如果像标准堆栈一样,我决定写入以前的数据并更改索引,我必须先删除整个扇区!因此我应该以编程方式解决这个问题。
有什么想法吗?
P.S:闪存映射为:16 Blocks -> Each Block = 16 Sectors -> Each Sector = 16 Pages -> 每页 = 256 Bytes
我有一个页面级别的写入命令,其中包含扇区和块的偏移和擦除命令。
【问题讨论】:
标签: data-structures stack microcontroller