JESD B5.1 EMMC协议介绍(八)

本文介绍了EMMC协议中关于块写入的细节,包括单倍速和双倍速模式下的CRC校验,以及开放式、预定义和可靠性写入的三种模式。此外,还讲解了擦除操作,强调了擦除组和写保护块的处理,以及TRIM命令的使用,用于精确擦除不再需要的数据。最后提到了Sanitize操作,用于安全删除EMMC中的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.6.8.1 块写入

在单倍速率模式下,命令CMD24-27写进行单个块或者多个块写入的时候,其末尾带有host 添加的CRC数据校验。支持块写入的EMMC可以定义好写入长度的数据块。如果CRC 校验失败的话,EMMC将会在DAT0 数据信号线上说明该错误,传输的数据将被丢失或者不写入。在多个块传输模式下,紧随其后的数据将被忽视掉。

在双倍速率传输模式下,写入block的长度为512字节,此时的EMMC也不支持部分块写入方式,同时在数据传输完成后,增加两种CRC数据校验方式,一种用于奇数校验,另一种用于偶数校验。

host 下发CMD25(write_multiple_block)对多个块的数据写入。如下定义了三种多个块数据写入的方式(host可以随时使用这三种写入方式)

  1. 开放式多个块写入

多个块写入时,对写入块的数量没有约定,EMMC接收到编程信号时,持续写入,直到接收到来自host 下发的stop命令,

2. 预定义的多个数据块写入

EMMC可以接收到需要写入块的数量,当完成写入动作后,终止数据传输,并返回到transfer 状态,这种方式写不需要在写入完成后下发stop命令,除非写入时出现报错。

为了开始执行固定块数据写入的动作,host 必须使用CMD23(set_block_count) 命令接着下发CMD25命令写入数据,如果没有设置写入块的数量,则EMMC将进入开放式写入模式,数据写入完成后需要下发停止命令。

3。可靠性写入:定义好写入的块数量以及可靠性写入的参数

这种写入方式类似于前文提到的预定义多块写入,区别在于写入同一逻辑地址的新数据被成功编程之前,原逻辑地址指向的旧数据必须保持不变。这样做的目的为了保证原数据块在写入数据后能够及时更新,即使在编程过程中发生突然断电,数据也要保持是有效的。

所有的block 容量被定义为512B,此时的CMD16(SET_BLOCKLEN)命令无效。如果大扇区模式激活后,则数据以多个容量为512Byte的block或者8个512byte的block 进行写入。

在进行可靠性写入的时候,大扇区模式下写入block的长度不受限。

通过CMD23 命令设置Reliable Write Request 参数(即第31bit)设置为1,

可靠性写入需要保证扇区对齐,在没有对齐的情况下,第19位将会置位,同时数据写入失败。(哪个字段的第19bit???)

如果在可靠性写入的过程中发生断电,则写入sector中的数据呈原子状分布:即掉电后sect

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南风轻拂_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值