【eMMC协议】6.6.23 - 6.6.26

6.6.23 Dual Data Rate mode selection

当eMMC为4.4或更高版本,并支持DDR模式后,可以在设备中启用DDR数据传输模式。在上电、硬件复位或软件复位后,EMMC的操作模式为SDR,除非EMMC通过执行引导操作开始,在这种情况下,SDR或DDR模式的选择由ext_csd寄存器第177字节BOOT_BUS_CONDITIONS中进行设置。
在这里插入图片描述
在这里插入图片描述

主机切换到DDR速率模式时,HS_TIMING[3:0]应设置为0x1。对于更改为HS400模式的主机,应将HS_TIMING[3:0]设置为0x3,并且设备应支持EXT_CSD寄存器[196]中定义的该模式(Device_TYPE)
在这里插入图片描述

在这里插入图片描述

主机使用SWITCH命令向EXT_CSD寄存器字节[183]的模式段中的BUS_width字节写入0x05(4位数据宽度)或0x06(8位数据宽度)。 在HS400模式中,主机将0x06(8位数据宽度)写入EXT_CSD寄存器字节[183]的模式段中的BUS_width字节。 该寄存器的有效值在表145中定义。如果主机试图写入无效值,则BUS_WIDTH字节不会更改,双数据速率模式不会启用,并且SWITCH_ERROR位被设置。
在这里插入图片描述
相反,双数据模式下的设备可以通过在BUS_WIDTH字节中写入新值而切换回单数据速率模式。

6.6.24 Dual Data Rate mode operation

  1. 设备启用双数据速率操作模式后,CMD17、CMD18、CMD24、CMD25和CMD56的块长度参数自动默认为512字节,并且不能通过在此模式下变为非法的CMD16(SET_BLOCKLEN)命令进行更改。
  2. 因此,在EMMC保持双数据率模式的情况下,所有单个或多个块的数据传输读取或写入需要在长度为512字节的固定块上操作 。
  3. CMD30和CMD31在双倍速率模式下使用其本机数据大小。除CMD16外,CMD42(LOCK_UNLOCK)、CMD14(BUSTEST_R)、CMD19(BUSTEST_W)、CMD11(READ_DAT_UNTIL_STOP)和CMD20(WRITE_DAT_UNTIL_STOP)在双倍速率模式下被认为是非法命令。如果需要使用这些命令,则必须将EMMC切换为单数据率模式才能使用。如果ext_csd寄存器的第130字节(PROGRAM_CID_CSD_DDR_SUPPORT)设置后,则支持CMD26和CMD27两个命令在双倍速率模式下运行。
    在这里插入图片描述

6.6.25 Background Operations

  1. 设备内部需要执行各种维护操作。为了减少读取和写入等时间关键操作期间的延迟,最好在其他时间执行维护操作,即主机未得到服务时。
  2. 然后将操作分为两种类型:
  • 前台操作——主机需要服务的操作,如读取或写入命令;
  • 后台操作——设备在不为主机提供服务的情况下执行的操作;根据它们的启动方式,有两种类型的后台操作:手动启动的后台操作和自主启动的后台运行。
  1. 手动启动方法:为了让设备知道主机何时不需要它,并且可以执行后台操作,主机应将任何值写入BKOPS_START(EXT_CSD字节[164]),以手动启动后台操作。设备将一直处于繁忙状态,直到不再需要后台处理。

  2. 由于前台操作的优先级高于后台操作,主机可以使用高优先级中断机制中断正在进行的后台操作。为了让设备知道主机是否会定期启动后台操作,主机应设置BKOPS_EN(EXT_CSD字节[163])的位0(MANUAL_EN),以指示其将周期性地写入BKOPS_START。然后,设备可以将其一些维护操作延迟到主机写入BKOPS_START时。
    在这里插入图片描述

  3. 设备以BKOPS_status的位[1:0](EXT_CSD字节[246])报告其后台操作状态,可以处于四个可能级别之一
    在这里插入图片描述

  4. 主机应定期检查状态,并根据需要启动后台操作,以便设备有足够的时间进行维护操作,以帮助减少前台操作期间的延迟。如果状态为3级(“关键”),则由于无法再延迟的维护操作,某些操作可能会超出其原始超时时间。主机应该给设备足够的时间进行后台操作,以避免一开始就达到这个级别。

  5. 为了使host能够快速检测到更高的级别,每当级别为2或3时,EXCEPTION_EVENTS_STATUS中的URGENT_BKOPS位都会被设置。这会自动设置EMMC状态中的EXCEPTION_BIT。这使得host能够在每个R1类型的响应中检测到紧急级别。host仍应定期从BKOPS_STATUS字节中读取完整状态,并根据需要启动后台操作

  6. 后台操作是强制性的功能。应该设置BKOPS_SUPPORT (EXT_CSD字节[502])的0位。
    在这里插入图片描述

  7. 自动启动法;如果主机想让设备在设备空闲时执行后台操作,应该通过将BKOPS_EN字段[EXT_CSD byte 163]中的AUTO_EN设置为1b来通知设备。当这个位被设置时,设备可以在它认为合适的时候启动或停止后台操作,而不需要通知主机。

  8. 当设置AUTO_EN位时,主机应保持设备电源处于活动状态。主机可以根据其功率限制或其他考虑随时设置或清除该位。

6.6.26 High Priority Interrupt (HPI)

  1. 在某些场景下,设备上不同类型的数据对主机的优先级可能不同。例如,写操作可能很耗时,因此可能需要抑制写操作以允许需求分页请求,以便在用户请求时启动进程。
  2. 高优先级中断(HPI)机制允许设备在实际完成之前中断较低优先级的操作,在OUT_OF_INTERRUPT_TIME超时内,为高优先级请求提供服务。主机可能需要重复被中断的操作或其中的一部分来完成原始请求 。
  3. HPI命令在设备中可能有两种实现之一:
  • CMD12 -当参数中的HPI位被设置时,基于STOP_TRANSMISSION命令。
  • CMD13 -当参数中的HPI位被设置时,基于SEND_STATUS命令。
  1. 主机检查HPI_FEATURES中的只读HPI_IMPLEMENTATION位(EXT_CSD字节[503]),并使用相应的命令索引
    在这里插入图片描述

  2. HPI只能在prg-state状态下执行。此时,它表示EMMC有一个更高优先级的命令待处理,因此EMMC应尽快中断当前操作并以不同的超时值返回到tran-state。

  3. 如果在除prg-state之外的状态下接收到HPI,则EMMC的行为在表60,设备状态转换中定义。如果状态转换是被允许的,则会发送响应,但忽略HPI位。如果不被允许进行状态转换,则该命令被视为非法命令。

  4. HPI命令在prg-state状态下被识别位合法命令。然而,只有一些命令可以被HPI中断。如果在不可中断的命令期间接收到HPI,则会发送响应,但HPI命令无效,原始命令将正常完成,可能超OUT_OF_INTERRUPT_TIME超时时间。

  5. HPI命令在prg-state被接受为合法命令。但是,只有一些命令可能被HPI中断。如果在不可中断的命令期间收到HPI,则发送响应,但HPI命令无效,原始命令正常完成,可能超过OUT_OF_INTERRUPT_TIME超时时间。

  6. 在host 下发CMD25( WRITE_MULTIPLE_BLOCK)命令后,EMMC会更新CORRECTLY_PRG_SECTORS_NUM字段(ext_csd寄存器的[245:242]字节),该字段记录成功写入EMMC的512Byte扇区的数量。host在重复中断的写命令时可以使用此信息 - 它无需重新写入所有数据扇区,可以跳过正确编程的扇区并继续仅写入尚未编程的其余数据。

  7. 如果在可靠写命令期间收到HPI,则前CORRECTLY_PRG_SECTORS_NUM个扇区应包含新数据,而其余所有扇区应包含旧数据。 在使用HPI机制之前,必须设置HPI_MGMT字段(ext_csd寄存器的第161字节)中的HPI_EN位来启用HPI机制。本规范要求支持HPI功能。所有EMMC都应将HPI_FEATURES字段(EXT_CSD字节[503])中的HPI_SUPPORT位设置为1。

  • 37
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Blank_time

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

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

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

打赏作者

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

抵扣说明:

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

余额充值