SD/MMC 卡使用自己的控制器进行磨损均衡是真的吗?

电器工程 sd
2022-01-24 01:40:49

我找不到任何关于此的可靠信息。我没有 SD/MMC 卡硬件的完整规格。

这是真的吗?使用这些卡时,我的高级应用程序不需要关注磨损均衡吗?

编辑

有人可以确认SD 规范可以保证磨损均衡吗?我想确定一下,因为看起来大多数供应商都这样做,但规范没有要求。

4个回答

我在一家曾经是 SD 协会成员的公司工作,我们熟悉 2.0 (SDHC) 规范。SD 卡规范没有磨损均衡的条目。如果他们愿意,这完全取决于 SD 制造商来处理。我们已经看到有些可能会,而另一些则不会(当心超级便宜的仿冒 SD 卡)。SDXC 可能已将其更改为包括磨损均衡,但我不确定。不幸的是,真正证明这一点的唯一方法是掌握官方规范。您最有可能在网上找到它,但 SD 协会确实希望您为此付费。

附带说明一下,在卡死且不再可写之前,拿一张 2GB 卡并从头到尾一遍又一遍地写入平均大约 10TB。此外,SD 卡不会让您知道数据何时损坏,即不会像 PC 硬盘那样返回 I/O 错误。这可能不是嵌入式设计的问题,因为 10TB 是大量数据,但对于某些人来说可能是一个因素。

这是真的!MicroSD 卡包含一个与封装在一些黑色塑料中的 (ARM) 微控制器结合的 NAND 闪存芯片。http://www.bunniestudios.com/blog/?p=898解释。

在后续帖子http://www.bunniestudios.com/blog/?p=918的最后, Bunnie 认为集成控制器的成本可能低于提前测试闪存的成本。

引用 SanDisk 的 SD 卡产品手册:“1.9 磨损均衡。磨损均衡是 SD 卡擦除池功能的固有部分,使用 NAND 内存。” 您可以阅读SanDisk 品牌卡数据表中的全部内容。

是的,SD/MMC 卡具有执行磨损均衡的控制器。如果他们不这样做,您可能会在几分钟内使用错误的写入模式销毁一个。

这实际上是一些嵌入式项目的问题。绝对没有办法(显然)知道哪些扇区可能会在任何时候被磨损,所以在错误的时间重启电源可能会破坏卡上任何地方的数据,无论你认为你在哪里写。(不要问我怎么知道的:))

SD 卡必须与保证系统干净关闭(或至少允许写入完成)的系统一起使用,否则将(最终)导致数据丢失。

编辑

问题是磨损均衡过程是完全隐藏的。磁盘上的任何扇区都可以随时移动(与写入的页面交换),如果在该过程的中间断电,随机扇区可能会损坏。

虽然有相当安全的方法来实施这一举措,但它不在任何规范中,所以你不能相信这张卡会做到这一点。你可以测试一张卡,让它工作,然后制造商可以在不改变部件号的情况下改变实现,你就完蛋了。

根据测试,我的 SD 卡控制器根本没有以安全的方式执行此操作。

我可能会研究我看到的专门为电源故障容错做广告的“高可靠性”SD卡......但是你必须相信制造商能正确地做到这一点,而我没有。我真的想直接控制页面擦除。我仍在努力解决这个问题。

使用任何类型的传统 NAND 闪存的任何类型的 SD 卡都必须使用某种类型的扇区虚拟化,因为没有传统的 NAND 闪存设备可以支持擦除单个 512 字节扇区,也没有传统的大尺寸 NAND 闪存设备如果每次写入扇区的尝试都需要设备复制该扇区的擦除块中的所有扇区(甚至复制到 RAM),然后擦除块并写入所有部门都回来了。大多数扇区虚拟化技术在本质上都有一定程度的磨损均衡。我预计质量设备和仿冒品之间最大的差异问题将是设备积极尝试平衡块之间的平整度的程度,与简单地使用伪随机块分配相比,并希望这将产生可接受的接近均匀的结果。在实践中,我希望在大多数情况下,即使是随机/希望的最佳分配也足够了。