sdhc卡上存储位置的“擦除”值是多少?

时间:2019-06-17 11:47:06

标签: sdhc

我正在为嵌入式应用程序写入Micro SD卡(SDHC)。该应用程序需要能够非常快速地实时写入卡。

我已经看到,事先擦除内存块可以使写入更快。不幸的是,由于为我使用的开发板提供的驱动程序不完整,我正在努力使擦除命令(和ACMD23)正常工作。

是否可以通过事先将“擦除”值写入存储块来擦除卡?例如,如果在擦除一个块后它变为0x12345678,那么我可以只写这个值以使其擦除以使用擦除命令来解决它吗?还是有其他方法将卡标记为已删除?

谢谢

我尝试写0xffffffff作为已擦除的值,但没有帮助。

1 个答案:

答案 0 :(得分:1)

我认为您误会了闪存的工作原理。

闪存具有比典型文件系统预期更大的块。另外,它们具有有限数量的擦除周期。因此,闪存控制器提供了将虚拟扇区映射到物理块的抽象。

被“擦除”的扇区根本没有被主动擦除。它只是未映射的,并且在其位置映射了一个空块(如果可用)。在后台,闪存控制器会在物理扇区完全未使用时对其周围的扇区进行混洗并擦除它们。

如您所见,闪存控制器的质量在这里很重要。通常,这甚至不是驱动程序问题。驱动程序只是发送命令;闪存控制器执行它们。如果需要更好的性能,请购买更好的SD卡。