ShuangChenYue ShuangChenYue
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git备忘清单
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • SVN Trunk Branches的Merge操作
  • 如何高效阅读嵌入式项目代码
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • MFC使用细节
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • NAND Flash基础
  • 基于PA算法的FTL引导
  • SD逻辑擦除和物理擦除
  • NAND Flash的SDR、ONFI、DDR接口
  • 【详解】Nand Flash必看知识
  • 【两万字详解】Nand Flash必看知识
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git备忘清单
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • SVN Trunk Branches的Merge操作
  • 如何高效阅读嵌入式项目代码
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • MFC使用细节
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • NAND Flash基础
  • 基于PA算法的FTL引导
  • SD逻辑擦除和物理擦除
  • NAND Flash的SDR、ONFI、DDR接口
  • 【详解】Nand Flash必看知识
  • 【两万字详解】Nand Flash必看知识
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
  • 嵌入式基础知识——存储器
  • 如何高效阅读嵌入式项目代码
  • 闪存存储和制造技术概述
  • 芯片 IO 驱动力
  • ARM处理器
  • Nand Flash
  • 主流先进封装技术介绍
  • Nand Flash 基础
  • 基于PA算法的FTL引导
  • SD 逻辑擦除和物理擦除
    • 一、逻辑擦除(Logical Erase)
      • 含义:
      • 特点:
      • 示例命令:
    • 二、物理擦除(Physical Erase)
      • 含义:
      • 特点:
    • 三、两者关系与差异
    • 四、实际应用举例
      • 情况1:用户使用文件系统删除文件(逻辑擦除)
      • 情况2:SD卡内部触发 Wear Leveling 或 GC(物理擦除)
    • 五、调试/量产视角补充
  • NAND Flash 的 SDR、ONFI、DDR 接口
  • 【详解】Nand Flash 必看知识 1
  • 【两万字详解】Nand Flash 必看知识
  • 闪存
霜晨月
2025-07-09
目录

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,用于告知控制器释放未用数据区域。
基于PA算法的FTL引导
NAND Flash 的 SDR、ONFI、DDR 接口

← 基于PA算法的FTL引导 NAND Flash 的 SDR、ONFI、DDR 接口→

Theme by Vdoing | Copyright © 2023-2025 霜晨月
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式