sdhc 卡上存储位置的 'erased' 值是多少?

What is the 'erased' value of a memory location on an sdhc card?

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

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

有没有什么方法可以通过预先将 'erased' 值写入内存块来擦除卡?例如,如果在擦除一个块后它变为 0x12345678,我是否可以只写这个值而不是使其被擦除以便使用擦除命令绕过?或者是否有其他方式让卡片将块标记为已擦除?

谢谢

我试过将 0xffffffff 作为擦除值,但没有用。

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

闪存中的块比典型的文件系统所期望的要大得多。此外,它们的擦除次数有限。因此,闪存控制器提供了将虚拟扇区映射到物理块的抽象。

"erased" 的扇区根本不会被主动擦除。它只是未映射,一个空块(如果可用)被映射到它的位置。在后台,闪存控制器随机排列扇区并擦除完全未使用的物理块。

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