当前位置: 首页 > news >正文

[元带你学: eMMC协议详解 14] 数据擦除(Erase) 详解

依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载

所在专栏 《元带你学: eMMC协议详解》

内容摘要

全文 4200字, 主要内容介绍了各种擦除操作概念以记用法,总结了不同擦除操作的区别, 根据不同安全级别和应用场景, 可以使用最合适的擦除类型。

前言

1 Erase

2 Trim

3 Sanitize

4 Discard

5 Secure Erase

参考


前言

如果你存了一张照片, 想删除怎么办?

一种是重新将这段数据,重新写入全0 的数据, 这是隐式擦除。这种擦除因为要把所有的地址写一遍全0 的数据, 比较费时间。 但如果是一定要彻底删除, 比如Chen老师的照片, 那就要一定建议要用这种方式。

但一般情况下, 我们删除可能是因为磁盘快满了, 想删除一些没意义的照片,希望秒删, 这样体验很流畅。怎么做到呢?

1 Erase

除了用写操作隐式擦除之外,e-MMC还提供了一个主机显式擦除功能。e-MMC的可擦除单元为“擦除组”; 擦除组是用写入块数目来衡量的,写入块是设备的基本可写单位。Erase Group的大小是设备特定的参数。

根据不同的存储器技术,erase后,这段存储器地址范围的内容应为' 0 '或' 1 '。这个值在EXT_CSD中定义。一旦erase命令成功完成,被擦除的设备地址范围应该表现得好像被全部'0'或全部'1'覆盖,这取决于不同的内存技术。erase命令的影响应该只是将LBA映射到无效设备地址范围(注意,在某些情况下,其他flash管理任务也可能在执行该命令期间完成)。主机可以擦除连续的擦除组。

开始擦除过程有三个步骤。

  • 首先,主机使用ERASE GROUP_START (CMD35)命令定义擦除范围的起始地址,
  • 然后使用ERASE_GROUP_END (CMD36)命令定义擦除范围的最后一个地址,
  • 最后通过发出ERASE (CMD38)命令启动擦除过程,参数位设置为零。

错误情况

  • 如果不按照擦除Sequence(CMD35、CMD36、CMD38) 发送命令,设备将在状态寄存器中设置ERASE_SEQ_ERROR位,并重置整个擦除序列。

如果主机提供超出范围的地址作为CMD35或CMD36的参数,设备将拒绝该命令,以ADDRESS_OUT_OF_RANGE位设置响应并重置整个擦除序列。

如果设备接收到非擦除命令(非CMD35、CMD36、CMD38和CMD13),则响应设置ERASE_RESET位,重置擦除顺序,执行最后一条命令。

如果擦除范围包括写保护块,则保留写保护块,只擦除非保护块。应该设置状态寄存器中的WP_ERASE_SKIP状态位。如上所述,对于块写入,设备将通过保持低DAT0来指示擦除正在进行中(Busy 中)。实际擦除时间可能很长,主机可能发出CMD7命令取消选择设备。

根据CMD38 带的参数的不同, 擦除可以细分为不同的擦除类型。

 

在执行Erase命令时,主机应该注意到一个擦除组包含多个写块,每个写入块可能包含不同的信息片段。当Erase执行时,它将应用于擦除组内的所有写入块。在主机执行Erase命令之前,它应该确保不再需要各个写入块中的信息。因此,为了避免意外删除有效数据,最好在擦除整个设备或分区时候使用Erase命令。如果主机只希望清除单个写块,则Trim命令可能更合适。

2 Trim

Trim操作类似于erase操作。Trim函数将擦除操作应用于写入块而不是擦除组。Trim功能允许主机识别不再需要的数据,以便在后台擦除事件中必要时设备可以擦除数据。应用了trim功能的写块的内容应根据不同的存储技术为'0'或'1'。这个值在EXT_CSD中定义。

一旦trim命令成功完成,根据不同的内存技术,被Trim范围对应的设备地址范围应该表现为被全部'0'或全部'1'覆盖。trim命令的影响应该只是将LBA映射到无效物理地址(注意,在某些情况下,其他flash管理任务也可能在执行该命令期间完成)。

完成TRIM过程分为三个步骤。

  • 首先,主机使用ERASE_GROUP_START (CMD35)命令定义范围的起始地址,
  • 然后使用ERASE_GROUP_END (CMD36)命令定义范围的最后一个地址,
  • 最后通过发出erase (CMD38)命令启动擦除过程,将参数位0设置为1,其余参数设置为0。

对于TRIM操作,CMD35和CMD36都标识写块的地址,而不是擦除组的地址。

如果在擦除序列之外接收到Trim命令(CMD35, CMD36或CMD38),则设备将在状态寄存器中设置ERASE_SEQ_ERROR位并重置整个序列。

如果主机提供超出范围的地址作为CMD35或CMD36的参数,设备将拒绝该命令,以ADDRESS_OUT_OF_RANGE位设置响应并重置整个擦除序列。

如果设备收到非擦除命令(CMD35、CMD36、CMD38、CMD13之外),则返回ERASE_RESET位,重置擦除顺序,执行最后一条命令。

未指定所选设备地址的命令不会中止擦除序列。如果Trim范围包括写保护块,则保留写保护块,只擦除非保护块。应该设置状态寄存器中的WP_ERASE_SKIP状态位。

对于块写入,设备将通过保持低DAT0来指示Trim命令正在进行中。实际擦除时间可能很长,主机可发出CMD7命令取消选择设备。主机应谨慎执行Trim命令,以免意外丢失数据。重置设备(使用CMD0、CMD15或e-MMC硬件重置)或电源故障将终止任何挂起的或活动的Trim命令。这可能会使操作中涉及的数据处于未知状态。

3 Sanitize

Sanitize操作是除TRIM和Erase之外的一个功能,用于根据安全删除类型从设备中删除数据。使用Sanitize操作需要设备在物理上删除数据。Sanitize操作是通过向扩展的CSD[165] Sanitize START写入一个值来启动的。当设备执行清理操作时,DAT0 会一直拉低, 表示Busy中。设备将Busy的情况下继续Sanitize操作,直到发生以下事件之一:

  • 消毒操作完成。
  • HPI用于终止操作
  • 电源故障。
  • 硬件复位。

清理操作完成后,未映射的主机地址空间中不应存在任何数据。如果清理操作因HPI、电源故障、CMD0或硬件复位而中断,则无法保证未映射的主机地址空间的状态。主机必须通过写入SANITIZE_START[165]来重新启动清理操作,并允许操作完成,以确保未映射的主机地址空间是清空的。由于主机无法访问正在操作的区域,因此需要此功能的应用程序必须与各个设备制造商合作,以确保该操作正确执行,并了解对设备可靠性的影响。

4 Discard

Discard的操作类似于TRIM。丢弃功能允许主机识别不再需要的数据,以便在后台擦除事件中必要时擦除数据。应用了丢弃函数的内容应该是“不关心”。在丢弃操作之后,根据设备的不同,原始数据可能保留部分或全部可被主机访问。主机不能再访问的数据部分可以被删除或取消映射,就像TRIM的情况一样。设备将决定丢弃写块的内容。

Discard和TRIM的区别在于,Discard对一个被丢弃的区域的读操作可能会返回部分或全部原始数据。但是,在Trim的情况下,整个区域将被取消映射或删除,并将返回'0'或'1',具体取决于内存技术。执行清理时,只有被Discard(丢弃)命令未映射的数据部分才会被清理命令删除。当应用“Sanitize”时,设备不能保证从设备中完全删除丢弃的数据。

完成Discard丢弃过程分为三个步骤。

首先,主机使用ERASE_GROUP_START (CMD35)命令定义范围的起始地址,

然后使用ERASE_GROUP_END (CMD36)命令定义范围的最后一个地址,

最后通过发出erase (CMD38)命令开始擦除过程,其中参数位0和位1设置为1,其余参数设置为0。

在丢弃操作的情况下,CMD35和CMD36标识写块的地址,而不是擦除组的地址。如果在擦除序列之外接收到丢弃命令(CMD35、CMD36或CMD38)之一,设备将在状态寄存器中设置ERASE_SEQ_ERROR位,并重置整个序列。

如果主机提供超出范围的地址作为CMD35或CMD36的参数,设备将拒绝该命令,以ADDRESS_OUT_OF_RANGE位设置响应并重置整个擦除序列。

如果接收到非擦除命令(CMD35、CMD36、CMD38、CMD13之外),设备将响应设置ERASE_RESET位,重置擦除顺序,执行最后一条命令。

未指定所选设备地址的命令不会中止擦除序列。如果丢弃范围包括写保护块,则保留写保护块,只擦除非保护块。应该设置状态寄存器中的WP_ERASE_SKIP状态位。如上所述,对于块写入,设备将通过保持低DATO来指示丢弃命令正在进行中。实际擦除时间可能很长,主机可能发出CMD7取消选择设备。请谨慎执行Discard命令,避免数据丢失。重置设备(使用CMDO、CMD15或e-MMC硬件重置)或电源故障将终止任何未决或活动的丢弃命令。这可能使操作中涉及的数据处于未知状态。

5 Secure Erase

说明: 安全擦除功能是为了向后兼容。新的系统级实现(基于v4.51及更高版本的设备)应该结合使用Erase和Sanitize,而不是安全擦除。除了标准的Erase命令之外,还有一个可选的Secure Erase命令。安全擦除命令不同于基本的擦除命令,它要求设备在发出命令时对内存阵列执行物理擦除操作, 而不是只删除映射表信息,并要求设备和主机等待操作完成后再进行下一个设备操作。

此外,安全擦除命令要求设备根据EXT_CSD中的安全删除类型对擦除组和这些擦除组中标识为擦除的任何项的副本执行安全清除操作。此命令允许具有高安全性要求的应用程序请求设备执行安全操作,同时接受可能的擦除时间性能影响(擦除时间可能比较长, 应用要接受这点)。Secure Erase命令的执行方式与Erase命令相同,只是Erase (CMD38)命令执行时将参数位31设置为1,其他参数位设置为0。有关Erase (CMD38)命令支持的参数组合的详细信息,请参见表11;有关与Erase (CMD38)命令相关的参数位的定义,请参见表12。请谨慎执行安全擦除命令,避免数据意外丢失。重置设备(使用CMDO、CMD15或e-MMC硬件重置)或电源故障将终止任何挂起的或活动的安全擦除命令。这可能使操作中涉及的数据处于未知状态。


 

参考

免责声明

本文根据公开信息整理,旨在介绍更多的存储知识,所载文章仅为作者观点,不构成投资或商用建议。本文仅用于学习交流, 不允许商用。若有疑问或有侵权行为请联系作者处理。

相关文章:

[元带你学: eMMC协议详解 14] 数据擦除(Erase) 详解

依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载。 所在专栏 《元带你学: eMMC协议详解》 内容摘要 全文 4200字, 主要内容介绍了各种擦除操作概念以记用法,总结了不同擦除操作的区别, 根据不同安全级别和应用场景…...

【程序人生-Hello‘s P2P】哈尔滨工业大学深入理解计算机系统大作业

计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 xxxx 学 号 2021xxxx 班 级 210xxxx 学 生 xx 指 导 教 师 xxx 计算机科学与技术学院 2023年5月 摘 要 HelloWorld是每个程序员接触的第一个程序,表面上平平无奇的它背后却是由操作系统许多设计精巧的机制支撑…...

Android Studio入门

首先确保系统已经安装好JDK和Android SDK Android SDK的安装有两种方案 方案一:直接下载包安装 官网下载 国内下载 方案二:使用命令行工具进行安装 在Android Studio官网下载Command line tools 最新:如果使用 Android Studio,…...

r2pm -ci r2ghidra 时报错:checking pkg-config flags for r_core... no

参考网址: sys/python.sh fails with checking pkg-config flags for r_core... no Issue #1943 radareorg/radare2 GitHub 进入目录/root/.local/share/radare2/r2pm/git/r2ghidra查看configure文件,查找报错位置 执行指令 : # pkg-co…...

【宿舍管理系统】注册登录页面的实现(前端)

目录 一.创建一个jsp文件,命名为login.jsp 代码: 1. 2. 3. 4. 5. 6. ​编辑 二. 创建一个css文件,并命名为style.css 1. ​编辑效果如下: ​编辑 代码解析: 2. 效果如下: 代码解析&#xff1…...

python写入excel,(二) 言简意赅傻瓜式写法

xlrd限制条数,openpyxl 上限较高,所以推荐这种写法 import openpyxl # openpyxl引入模块 def write_to_excel(path: str, sheetStr, info, data): # 实例化一个workbook对象 workbook openpyxl.Workbook() # 激活一个sheet …...

我用ChatGPT写2023高考语文作文(六):北京卷II

2023年 北京卷 II 适用地区:北京 舞台上,戏曲演员有登场亮相的瞬间。生活中也有许多亮相时刻:国旗下的讲话,研学成果的汇报,新产品的发布……每一次亮相,都受到众人关注;每一次亮相,…...

Vue中如何进行图表绘制

Vue中如何进行图表绘制 数据可视化是Web应用中非常重要的一部分,其中图表绘制是其中的重要环节。Vue作为一款流行的前端框架,提供了很多优秀的图表库,以满足不同业务场景下的需求。本文将介绍如何在Vue中进行图表绘制,包括使用Vu…...

【Soft-prompt Tuning for Large Language Models to Evaluate Bias 论文略读】

Soft-prompt Tuning for Large Language Models to Evaluate Bias 论文略读 INFORMATIONAbstract1 Introduction2 Related work3 Methodology3.1 Experimental setup 4 Results5 Discussion & Conclusion总结A Fairness metricsB Hyperparmeter DetailsC DatasetsD Prompt …...

Qt 定时器与定时事件

一、定时器 在头文件.h中进行声明: private slots:void timeOut(); // 定时器超时槽函数在.cpp中进行实现相应的功能: // 构造函数 Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);// 创建一个新的定时…...

《UNUX环境高级编程》(1)UNIX基础

1、引言 2、UNIX体系结构 操作系统 一种软件,控制计算机硬件资源,提供程序运行环境。操作系统包含了内核和一些其他软件(如shell、公用函数库、应用程序等)。例如Linux就是GNU操作系统的内核,因此也称为GNU/Linux操作…...

MATLAB 入门之旅摘要

matlab官方基础课程,重温或者入门都是不错的选择。 MATLAB 入门之旅 MATLAB 入门之旅 | 自定进度在线课程 - MATLAB & Simulink 基本语法 示例说明x pi使用等号 () 创建变量。 左侧 (x) 是变量的名称,其值为右侧 (pi) 的值。y sin(-5)您可以使用括…...

chatgpt赋能python:Python小数运算:解决精度问题的最佳实践

Python小数运算:解决精度问题的最佳实践 在进行小数运算时,Python是一种十分常用的语言,但在进行小数运算时,由于二进制和十进制之间的转换不完全,可能会导致一些精度问题。为了避免这些问题,让我们一起了…...

Linux 安装Docker完整教程(六)

文章目录 背景一、Docker简介二、docker desktop 和 docker engin 区别三、Linux 安装Docker1. 安装docker的前置条件:2. 查看Docker版本3. 检查是否安装过Docker4. Docker自动化安装 (不想自带化安装的可跳过本步骤,选择手动安装)5. Docker手动安装&…...

手机连接adb 相关问题汇总

目录 关于端口占用问题1 关于修改adb 端口配置问题2 方法3 方法4 关于端口占用问题1 转载链接:https://www.jianshu.com/p/902a89b06271 报错信息: error: no device/emulators found error: device still connecting 解决方案: 重启…...

MySQL数据相关操作

一、介绍 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及。 二、插入数据INSERT 1. 插入完整…...

2023年5月青少年软件编程(Python) 等级考试试卷(四级)

青少年软件编程(Python) 等级考试试卷(四级)2023.6 分数: 100 题数: 38 一、 单选题(共 25 题, 共 50 分) 1.下列程序段的运行结果是? ( ) def s(n): if n0: …...

Python selenium自动化测试模型图解

1、线性测试 优势:每一个脚本都是完整独立的,每一个脚本对应一个测试用例 缺点:开发成本高,会有重复操作重复脚本;维护成本也高,修改重复操作的脚本时,要逐一进行修改。 2、模块化驱动测试 …...

【详解】篮球记分牌硬件及代码

篮球记分牌设计 1 系统设计1.1 设计任务 1.2 性能指标要求1.2 设计思路及设计框图1.2.1设计思路1.2.2总体设计框图1.2.3电路原理图1.2.3 PCB布线图 2 主要程序模块的设计及原理2.1 外部中断0 2.2 菜单2.3 两队比分及两队犯规次数显示及修改2.3.1选择功能2.3.2修改功能2.3.3显示…...

FreeRTOS实时操作系统(二)系统文件代码学习

文章目录 前言系统配置任务创建任务创建删除实践 前言 接着学习正点原子的FreeRTOS教程,涉及到一些详细的系统内文件代码 系统配置 可以通过各种的宏定义来实现我们自己的RTOS配置(在FreeRTOSconfig.h) “INCLUDE”:配置API函数…...

NetGen:高质量网格生成的科学计算解决方案

NetGen:高质量网格生成的科学计算解决方案 【免费下载链接】netgen netgen: 是一个自动的3D四面体网格生成器,适用于从构造实体几何(CSG)或STL文件格式的边界表示(BRep)生成网格。 项目地址: https://git…...

DAMO-YOLO部署教程:SSL证书配置与HTTP自动跳转HTTPS设置

DAMO-YOLO部署教程:SSL证书配置与HTTP自动跳转HTTPS设置 1. 引言 当你成功部署了DAMO-YOLO智能视觉探测系统后,可能会发现浏览器提示"不安全"的警告。这是因为默认的HTTP协议缺乏加密保护,对于涉及图像处理的AI系统来说&#xff…...

计算机毕业设计springboot足球俱乐部管理系统 基于SpringBoot的青少年足球培训综合服务平台的设计与实现 基于SpringBoot架构的足球青训营数字化运营系统的设计与实现

计算机毕业设计springboot足球俱乐部管理系统(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着足球运动的全球普及和竞技水平的持续提升,青少年足球培训已成为各国…...

基于dify智能客服工作流的多智能体架构实战:高并发场景下的设计与优化

背景痛点:当智能客服遭遇流量洪峰 最近在负责一个电商大促期间的智能客服系统保障,真切体会到了传统单体智能体架构的“力不从心”。我们的客服机器人基于一个大语言模型构建,平时QPS在50左右时,响应时间(RT&#xff0…...

益达App:5分钟打造你的个性化跨平台媒体中心

益达App:5分钟打造你的个性化跨平台媒体中心 【免费下载链接】yidaRule 益达规则仓库 项目地址: https://gitcode.com/gh_mirrors/yi/yidaRule 在信息爆炸的时代,我们每天都要面对海量的媒体内容——视频、音频、小说、漫画分散在各个平台和网站中…...

项目分享|LLM驱动的多市场股票智能分析器

项目分享|LLM驱动的多市场股票智能分析器 引言 在股票投资分析中,实时行情跟踪、多维度数据解析和科学决策判断是核心需求,而个人投资者往往面临数据分散、分析耗时、缺乏专业工具的问题。由ZhuLinsen开源的daily_stock_analysis项目完美解决了这些痛点…...

JiYuTrainer:如何一键解除极域电子教室的全屏控制限制?

JiYuTrainer:如何一键解除极域电子教室的全屏控制限制? 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你是否曾在机房上课时,被极域电子教室的…...

纯化水系统HMI与PLC协同控制:从界面设计到逻辑实现

1. 纯化水系统控制的核心技术组合 在制药行业的纯化水系统中,HMI(人机界面)与PLC(可编程逻辑控制器)的协同工作堪称自动化控制的黄金搭档。这套系统就像是一个精密的"大脑神经中枢"组合——PLC负责底层设备的…...

2025年06月CCF-GESP编程能力等级认证Scratch图形化编程一级真题解析

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 3 分,共 30 分) 第 1 题 2025 年 4 月 19 日在北京举行了一场颇为瞩目的人形机器人半程马拉松赛。比赛期间,跑动着的机器人会利用身上安装…...

终极指南:如何在Chainer中构建强大的循环神经网络(RNN)

终极指南:如何在Chainer中构建强大的循环神经网络(RNN) 【免费下载链接】chainer A flexible framework of neural networks for deep learning 项目地址: https://gitcode.com/gh_mirrors/ch/chainer 想要掌握深度学习中的序列建模吗?Chainer框架…...