linux sata reset 指令,SATA系列专题之四:4.1 Command Layer命令分类详细解析

本文主要是介绍linux sata reset 指令,SATA系列专题之四:4.1 Command Layer命令分类详细解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、故事前传

在之前的文章中,

我们已经介绍了传输层(Transport

Layer),链路层(Link Layer)以及物理层(Physical Layer)的相关内容。详见前期文章:

1,浅析SATA

Physical Layer物理层OOB信号;

2,SATA

Link Layer链路层解析2.0-2.3;

3,SATA

Transport Layer传输层解析3.0-3.4;

4,SATA

Command Layer命令层解析4.0;

我们这里主要解析Command layer命令层具体Command相关内容。

二、SATA Command Layer命令层具体解析

SATA

Spec定义了12类Command,具体分类与对应的数量如下表:

a4c26d1e5885305701be709a3d33442f.png

那么,我们就对这12类Commands中作详细的介绍:

1. Command No Implemented

当Command无法执行时,状态如下图,Device需要做三件事情:

在ATA status register中将ERR bit 置为1;

在ATA error register中将abort bit置为1;

返回Register FIS-D2H更新shadow register.

注:ATA status & error register详细介绍请见历史文章"SATA

Transport Layer传输层解析".

a4c26d1e5885305701be709a3d33442f.png

2. Non-Data Commands

Non-Data

Commands这一类的command sequence比较简单,主要是通过Register

FIS在Host与device之间进行交互,如下图:

a4c26d1e5885305701be709a3d33442f.png

3. PIO Data-In Commands

PIO

data-in command的作用是将device的数据读到host memory中,具体sequence如下:

a4c26d1e5885305701be709a3d33442f.png

PIO read

SATA trace供参考:

a4c26d1e5885305701be709a3d33442f.png

4. PIO Data-Out Commands

PIO

data-out command的作用是将host memory数据写入device。具体sequence如下:

a4c26d1e5885305701be709a3d33442f.png

5. DMA Data-In(Read) Commands

a4c26d1e5885305701be709a3d33442f.png

DMA read

SATA trace供参考:

a4c26d1e5885305701be709a3d33442f.png

6. DMA Data-Out(Write) Commands

a4c26d1e5885305701be709a3d33442f.png

DMA write

SATA trace供参考:

a4c26d1e5885305701be709a3d33442f.png

7. DMA Data-In(Read) Queued Commands

a4c26d1e5885305701be709a3d33442f.png

8. DMA Data-Out(Write) Queued Commands

a4c26d1e5885305701be709a3d33442f.png

9. COMRSET Sequence

a4c26d1e5885305701be709a3d33442f.png

10. Host Software Reset Sequence

a4c26d1e5885305701be709a3d33442f.png

这篇关于linux sata reset 指令,SATA系列专题之四:4.1 Command Layer命令分类详细解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/243342

相关文章

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2