SCSI-UFS子系统-6.UFS 之 SCSI 命令集

SCSI-UFS子系统-6.UFS 之 SCSI 命令集

SCSI 命令集

命令层结构
  • UFS 原生命令集:目前未定义,未来可能扩展。

  • UFS SCSI 命令集

    :当前主要使用 SCSI 命令集,包括:

    • SPC(SCSI 主命令集):定义了通用的 SCSI 命令。
    • SBC(SCSI 块命令集):定义了针对块设备的命令,如读写操作。
  • UFS 传输协议层:负责在主机和设备之间传输命令和数据。

  • UFS 互连层:使用 MIPI UniPro 和 M-PHY 协议,提供物理和链路层的连接

在这里插入图片描述

通用闪存存储(UFS)SCSI 命令

兼容性:UFS 的基本 SCSI 命令与 SCSI 主命令集和块命令集兼容,确保了通用性和广泛的支持。

强制性命令:当逻辑单元启用时(bLUEnable = 01h),设备必须支持表中标记为 M(必需) 的命令。这些命令涵盖了设备操作的基本功能,如读、写、格式化、容量查询和设备状态检查等。

可选命令:标记为 O(可选) 的命令由设备厂商根据需要选择性支持,以提供额外的功能或性能优化。

安全命令SECURITY PROTOCOL INSECURITY PROTOCOL OUT 命令用于安全协议的传输,特别是在 RPMB 逻辑单元中,用于保护数据的完整性和安全性。

表 11.1 — UFS SCSI 命令集

命令名称操作码支持情况
FORMAT UNIT04hM(必需)
INQUIRY12hM(必需)
MODE SELECT (10)55hM(必需)
MODE SENSE (10)5AhM(必需)
PRE-FETCH (10)34hM(必需)
PRE-FETCH (16)90hO(可选)
READ (6)08hM(必需)
READ (10)28hM(必需)
READ (16)88hO(可选)
READ BUFFER3ChM(必需)
READ CAPACITY (10)25hM(必需)
READ CAPACITY (16)9EhM(必需)
REPORT LUNSA0hM(必需)
REQUEST SENSE03hM(必需)
SECURITY PROTOCOL IN (1)A2hM(必需)
SECURITY PROTOCOL OUT (1)B5hM(必需)
SEND DIAGNOSTIC1DhM(必需)
START STOP UNIT1BhM(必需)
SYNCHRONIZE CACHE (10)35hM(必需)
SYNCHRONIZE CACHE (16)91hO(可选)
TEST UNIT READY00hM(必需)
UNMAP42hM(必需)
VERIFY (10)2FhM(必需)
WRITE (6)0AhM(必需)
WRITE (10)2AhM(必需)
WRITE (16)8AhO(可选)
WRITE BUFFER3BhM(必需)

相信大家看到这么大的表是一个傻掉的状态,毫无头绪,一团乱麻,但是如果将这些命令分类呢,逐一击破会不会逐渐上手起来。

这些命令的主要目的就是数据的读写,所以我们应该先进行数据的读写入手,然后其他的命令是围绕他服务的, 根据UAP的三个组成 设备管理任务管理数据传输,分类如下:

一、查询和报告类命令

这些命令用于获取设备信息、状态和配置,以便主机了解设备的能力和当前状态。

二、数据传输类命令

这些命令用于在主机和设备之间进行数据的读写和缓冲区操作。

三、设备管理类命令

这些命令用于控制设备的状态、配置和执行特定的管理操作。

四、缓存管理类命令

这些命令用于管理设备的缓存,以优化性能和确保数据一致性。

五、数据完整性和空间管理类命令

这些命令用于确保数据的完整性和优化存储空间的使用。

命令名称操作码支持类别说明
一、查询和报告类命令
INQUIRY12hM查询和报告请求设备的描述信息,如制造商、产品标识和版本等。
REPORT LUNSA0hM查询和报告报告设备支持的逻辑单元号(LUN)。
REQUEST SENSE03hM查询和报告获取上一次命令执行的错误或状态信息。
READ CAPACITY (10)25hM查询和报告获取设备的容量信息,最大支持 2TB。
READ CAPACITY (16)9EhM查询和报告获取设备的容量信息,支持超过 2TB 的大容量设备。
MODE SENSE (10)5AhM查询和报告获取设备的模式参数和当前配置。
二、数据传输类命令
READ (6)08hM数据传输从指定的逻辑块读取数据(6 字节 CDB)。
READ (10)28hM数据传输从指定的逻辑块读取数据(10 字节 CDB)。
READ (16)88hO数据传输从指定的逻辑块读取数据,支持更大地址范围(16 字节 CDB)。
WRITE (6)0AhM数据传输向指定的逻辑块写入数据(6 字节 CDB)。
WRITE (10)2AhM数据传输向指定的逻辑块写入数据(10 字节 CDB)。
WRITE (16)8AhO数据传输向指定的逻辑块写入数据,支持更大地址范围(16 字节 CDB)。
READ BUFFER3ChM数据传输从设备的缓冲区读取数据。
WRITE BUFFER3BhM数据传输向设备的缓冲区写入数据。
三、设备管理类命令
FORMAT UNIT04hM设备管理格式化设备,准备存储介质供使用。
MODE SELECT (10)55hM设备管理设置设备的模式参数和配置选项。
START STOP UNIT1BhM设备管理控制设备的启动和停止状态。
SEND DIAGNOSTIC1DhM设备管理请求设备执行自检或诊断操作。
TEST UNIT READY00hM设备管理检查设备是否已准备好接受命令。
四、缓存管理类命令
PRE-FETCH (10)34hM缓存管理预读取指定的逻辑块到缓存中(10 字节 CDB)。
PRE-FETCH (16)90hO缓存管理预读取指定的逻辑块到缓存中,支持更大地址范围(16 字节 CDB)。
SYNCHRONIZE CACHE (10)35hM缓存管理将缓存中的数据写入非易失性存储介质(10 字节 CDB)。
SYNCHRONIZE CACHE (16)91hO缓存管理同步缓存数据,支持更大地址范围(16 字节 CDB)。
五、数据完整性和空间管理类命令
VERIFY (10)2FhM数据完整性与空间管理验证指定的逻辑块数据是否可读且正确。
UNMAP42hM数据完整性与空间管理通知设备指定的逻辑块不再需要,释放相关存储空间。
六、安全命令
SECURITY PROTOCOL IN (1)A2hM安全接收设备的安全协议相关数据。 注:由 RPMB 逻辑单元支持。
SECURITY PROTOCOL OUT (1)B5hM安全向设备发送安全协议相关数据。 注:由 RPMB 逻辑单元支持。
七、其他命令
REQUEST SENSE03hM其他获取上一次命令执行的错误或状态信息。

支持情况说明:

  • M(Mandatory):强制性支持的命令,设备必须实现。
  • O(Optional):可选支持的命令,设备可根据需求选择实现。

想象你在做一个 存储动作的流程:

想象你在设置一个新的 UFS 存储设备:

  1. TEST UNIT READY:首先,检查设备是否准备好。
  2. INQUIRY:然后,询问设备的基本信息,了解它的身份。
  3. MODE SENSE:获取当前的设备配置,了解默认设置。
  4. MODE SELECT:根据需要,设置新的配置参数。
  5. FORMAT UNIT:格式化设备,清理存储空间。
  6. READ CAPACITY:检查设备的容量,确保满足需求。
  7. REPORT LUNS:查看设备上有哪些逻辑单元可用。
  8. PRE-FETCH:为了提高性能,预取需要的数据。
  9. READ / WRITE:开始正常的读写操作。
  10. SYNCHRONIZE CACHE:确保缓存中的数据已写入存储介质。
  11. VERIFY:验证数据是否正确写入。
  12. UNMAP:释放不再需要的存储空间。
  13. SEND DIAGNOSTIC:定期检查设备的健康状况。
  14. REQUEST SENSE:如果出现错误,获取详细的错误信息。
  15. START STOP UNIT:在需要时,启动或停止设备。
    确写入。
  16. UNMAP:释放不再需要的存储空间。
  17. SEND DIAGNOSTIC:定期检查设备的健康状况。
  18. REQUEST SENSE:如果出现错误,获取详细的错误信息。
  19. START STOP UNIT:在需要时,启动或停止设备。
  20. SECURITY PROTOCOL IN/OUT:确保数据传输的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值