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 IN 和 SECURITY PROTOCOL OUT 命令用于安全协议的传输,特别是在 RPMB 逻辑单元中,用于保护数据的完整性和安全性。
表 11.1 — UFS SCSI 命令集
| 命令名称 | 操作码 | 支持情况 |
|---|---|---|
| FORMAT UNIT | 04h | M(必需) |
| INQUIRY | 12h | M(必需) |
| MODE SELECT (10) | 55h | M(必需) |
| MODE SENSE (10) | 5Ah | M(必需) |
| PRE-FETCH (10) | 34h | M(必需) |
| PRE-FETCH (16) | 90h | O(可选) |
| READ (6) | 08h | M(必需) |
| READ (10) | 28h | M(必需) |
| READ (16) | 88h | O(可选) |
| READ BUFFER | 3Ch | M(必需) |
| READ CAPACITY (10) | 25h | M(必需) |
| READ CAPACITY (16) | 9Eh | M(必需) |
| REPORT LUNS | A0h | M(必需) |
| REQUEST SENSE | 03h | M(必需) |
| SECURITY PROTOCOL IN (1) | A2h | M(必需) |
| SECURITY PROTOCOL OUT (1) | B5h | M(必需) |
| SEND DIAGNOSTIC | 1Dh | M(必需) |
| START STOP UNIT | 1Bh | M(必需) |
| SYNCHRONIZE CACHE (10) | 35h | M(必需) |
| SYNCHRONIZE CACHE (16) | 91h | O(可选) |
| TEST UNIT READY | 00h | M(必需) |
| UNMAP | 42h | M(必需) |
| VERIFY (10) | 2Fh | M(必需) |
| WRITE (6) | 0Ah | M(必需) |
| WRITE (10) | 2Ah | M(必需) |
| WRITE (16) | 8Ah | O(可选) |
| WRITE BUFFER | 3Bh | M(必需) |
相信大家看到这么大的表是一个傻掉的状态,毫无头绪,一团乱麻,但是如果将这些命令分类呢,逐一击破会不会逐渐上手起来。
这些命令的主要目的就是数据的读写,所以我们应该先进行数据的读写入手,然后其他的命令是围绕他服务的, 根据UAP的三个组成 设备管理 、任务管理、数据传输,分类如下:
一、查询和报告类命令
这些命令用于获取设备信息、状态和配置,以便主机了解设备的能力和当前状态。
二、数据传输类命令
这些命令用于在主机和设备之间进行数据的读写和缓冲区操作。
三、设备管理类命令
这些命令用于控制设备的状态、配置和执行特定的管理操作。
四、缓存管理类命令
这些命令用于管理设备的缓存,以优化性能和确保数据一致性。
五、数据完整性和空间管理类命令
这些命令用于确保数据的完整性和优化存储空间的使用。
| 命令名称 | 操作码 | 支持 | 类别 | 说明 |
|---|---|---|---|---|
| 一、查询和报告类命令 | ||||
| INQUIRY | 12h | M | 查询和报告 | 请求设备的描述信息,如制造商、产品标识和版本等。 |
| REPORT LUNS | A0h | M | 查询和报告 | 报告设备支持的逻辑单元号(LUN)。 |
| REQUEST SENSE | 03h | M | 查询和报告 | 获取上一次命令执行的错误或状态信息。 |
| READ CAPACITY (10) | 25h | M | 查询和报告 | 获取设备的容量信息,最大支持 2TB。 |
| READ CAPACITY (16) | 9Eh | M | 查询和报告 | 获取设备的容量信息,支持超过 2TB 的大容量设备。 |
| MODE SENSE (10) | 5Ah | M | 查询和报告 | 获取设备的模式参数和当前配置。 |
| 二、数据传输类命令 | ||||
| READ (6) | 08h | M | 数据传输 | 从指定的逻辑块读取数据(6 字节 CDB)。 |
| READ (10) | 28h | M | 数据传输 | 从指定的逻辑块读取数据(10 字节 CDB)。 |
| READ (16) | 88h | O | 数据传输 | 从指定的逻辑块读取数据,支持更大地址范围(16 字节 CDB)。 |
| WRITE (6) | 0Ah | M | 数据传输 | 向指定的逻辑块写入数据(6 字节 CDB)。 |
| WRITE (10) | 2Ah | M | 数据传输 | 向指定的逻辑块写入数据(10 字节 CDB)。 |
| WRITE (16) | 8Ah | O | 数据传输 | 向指定的逻辑块写入数据,支持更大地址范围(16 字节 CDB)。 |
| READ BUFFER | 3Ch | M | 数据传输 | 从设备的缓冲区读取数据。 |
| WRITE BUFFER | 3Bh | M | 数据传输 | 向设备的缓冲区写入数据。 |
| 三、设备管理类命令 | ||||
| FORMAT UNIT | 04h | M | 设备管理 | 格式化设备,准备存储介质供使用。 |
| MODE SELECT (10) | 55h | M | 设备管理 | 设置设备的模式参数和配置选项。 |
| START STOP UNIT | 1Bh | M | 设备管理 | 控制设备的启动和停止状态。 |
| SEND DIAGNOSTIC | 1Dh | M | 设备管理 | 请求设备执行自检或诊断操作。 |
| TEST UNIT READY | 00h | M | 设备管理 | 检查设备是否已准备好接受命令。 |
| 四、缓存管理类命令 | ||||
| PRE-FETCH (10) | 34h | M | 缓存管理 | 预读取指定的逻辑块到缓存中(10 字节 CDB)。 |
| PRE-FETCH (16) | 90h | O | 缓存管理 | 预读取指定的逻辑块到缓存中,支持更大地址范围(16 字节 CDB)。 |
| SYNCHRONIZE CACHE (10) | 35h | M | 缓存管理 | 将缓存中的数据写入非易失性存储介质(10 字节 CDB)。 |
| SYNCHRONIZE CACHE (16) | 91h | O | 缓存管理 | 同步缓存数据,支持更大地址范围(16 字节 CDB)。 |
| 五、数据完整性和空间管理类命令 | ||||
| VERIFY (10) | 2Fh | M | 数据完整性与空间管理 | 验证指定的逻辑块数据是否可读且正确。 |
| UNMAP | 42h | M | 数据完整性与空间管理 | 通知设备指定的逻辑块不再需要,释放相关存储空间。 |
| 六、安全命令 | ||||
| SECURITY PROTOCOL IN (1) | A2h | M | 安全 | 接收设备的安全协议相关数据。 注:由 RPMB 逻辑单元支持。 |
| SECURITY PROTOCOL OUT (1) | B5h | M | 安全 | 向设备发送安全协议相关数据。 注:由 RPMB 逻辑单元支持。 |
| 七、其他命令 | ||||
| REQUEST SENSE | 03h | M | 其他 | 获取上一次命令执行的错误或状态信息。 |
支持情况说明:
- M(Mandatory):强制性支持的命令,设备必须实现。
- O(Optional):可选支持的命令,设备可根据需求选择实现。
想象你在做一个 存储动作的流程:
想象你在设置一个新的 UFS 存储设备:
- TEST UNIT READY:首先,检查设备是否准备好。
- INQUIRY:然后,询问设备的基本信息,了解它的身份。
- MODE SENSE:获取当前的设备配置,了解默认设置。
- MODE SELECT:根据需要,设置新的配置参数。
- FORMAT UNIT:格式化设备,清理存储空间。
- READ CAPACITY:检查设备的容量,确保满足需求。
- REPORT LUNS:查看设备上有哪些逻辑单元可用。
- PRE-FETCH:为了提高性能,预取需要的数据。
- READ / WRITE:开始正常的读写操作。
- SYNCHRONIZE CACHE:确保缓存中的数据已写入存储介质。
- VERIFY:验证数据是否正确写入。
- UNMAP:释放不再需要的存储空间。
- SEND DIAGNOSTIC:定期检查设备的健康状况。
- REQUEST SENSE:如果出现错误,获取详细的错误信息。
- START STOP UNIT:在需要时,启动或停止设备。
确写入。 - UNMAP:释放不再需要的存储空间。
- SEND DIAGNOSTIC:定期检查设备的健康状况。
- REQUEST SENSE:如果出现错误,获取详细的错误信息。
- START STOP UNIT:在需要时,启动或停止设备。
- SECURITY PROTOCOL IN/OUT:确保数据传输的安全性。
6429

被折叠的 条评论
为什么被折叠?



