0

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

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

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

谢谢

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

4

1 回答 1

1

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

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

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

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

于 2019-06-17T12:00:39.700 回答