[元带你学: 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. 效果如下: 代码解析࿱…...
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函数…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...