SD 逻辑擦除和物理擦除
# SD 逻辑擦除和物理擦除
SD卡的“逻辑擦除”和“物理擦除”是两个概念,分别对应主机与Flash内部的不同层面操作,下面是详细解释:
# 一、逻辑擦除(Logical Erase)
# 含义:
主机通过 标准接口命令(如 CMD38) 向 SD 卡发出逻辑擦除指令,在主机的视角,擦除了某一块或某段逻辑地址的数据。
# 特点:
- 发生在主机和卡控制器之间;
- 控制器接收逻辑擦除命令后,可能不会立即对 NAND 执行物理擦除,而是做“标记删除”或“延迟擦除”;
- 一般不会立即释放物理块,等待后续 GC(Garbage Collection)再清理;
- 对文件系统来说,逻辑擦除后这段区域可以被视为“空闲”或“可重用”。
# 示例命令:
CMD38:擦除指定起始地址和结束地址间的逻辑块。
# 二、物理擦除(Physical Erase)
# 含义:
物理擦除是指 Flash 控制器对 NAND Flash 的擦除块(Erase Block) 进行真正的擦除操作,将数据恢复为全1(0xFF),以便再次写入。
# 特点:
- 通常是 NAND Flash 擦除最小单位为 擦除块(如 128KB、256KB);
- 每次物理擦除都有次数限制(一般为几千~上万次);
- 控制器可能在执行逻辑擦除或触发垃圾回收(GC)时才做物理擦除;
- 是 Flash 介质内部的行为,主机不可直接控制。
# 三、两者关系与差异
| 项目 | 逻辑擦除 | 物理擦除 |
|---|---|---|
| 发起者 | 主机(通过标准命令) | 控制器(根据需要触发) |
| 操作单位 | 逻辑块(LBA) | Flash 擦除块(通常为多个页的组合) |
| 是否立即生效 | 不一定立即物理擦除 | 立即擦除 Flash 中的数据 |
| 是否影响写寿命 | 通常不会立即产生 P/E 周期 | 每次都会增加擦除次数 |
| 控制权限 | 主机可直接控制 | 主机不可控制,受 Flash 控制器管理 |
# 四、实际应用举例
# 情况1:用户使用文件系统删除文件(逻辑擦除)
- 文件被操作系统标记为“删除”;
- SD卡控制器可将对应 LBA 设为“无效”或“可覆盖”,并不会立刻擦除 Flash;
- 后续 GC 时,控制器才会擦除 Flash 的物理块。
# 情况2:SD卡内部触发 Wear Leveling 或 GC(物理擦除)
- Flash 控制器检测某些物理块中有效数据减少;
- 迁移剩余有效数据到新块后,对原块做物理擦除;
- 提高空间回收效率和写入性能。
# 五、调试/量产视角补充
在 SD 卡量产或测试中(比如使用厂商 Tool)时,常见术语如:
- “逻辑清除”(Clear User Area):执行全卡 CMD38;
- “低级格式化”:包含物理擦除操作(需支持特殊命令,如厂商模式下的擦除);
- “Trim” 命令(eMMC):功能类似 CMD38,用于告知控制器释放未用数据区域。