SATA协议14种FIS介绍



FIS(Frame Information Structure)解析

FIS是一种用于Host和device之间信息传输的机制,每个FIS的格式都是固定的,并且对应唯一的ID,SATA Spec定义了14类FIS ID。



但是,实际上,我们用到主要是8类:

FIS Type

FIS IDDiscriptionSize
H2D 27hSend command to drive5 DWs
D2H34hResponds status to host5 DWs
DMA Activate39hActivate a DMA data transfer1 DW
DMA Setup41hStart a DMA data transfer7 DWs
PIO Setup5Fh

 Start a PIO transfer

PIO=Programmed Input/Output 

5 DWs
DATA46hData packet2049 DWs
SDBA1hResponds a command completion for NCQ command2 DWs
BIST58h SATA Built-In Self-Test3 DWs


(1) Register FIS-H2D(27h)

用来传输主机的Shadow Register(可以理解为CPU的传达室)的资料到设备,与ATA/ATAPI指令字和寄存器相容。 


当Device接收到一个有效的Register FIS - H2D,检查C bit的内容,然后更新命令寄存器 / 控制寄存器中的内容中,

C bit为‘1’,Device按照Command Register中的命令执行命令,

C bit为‘0’,Device按照Control Register中的内容执行控制请求。 



(2) Register FIS-D2H(34h)

D2H的作用如下:

  • 从Device送往Host端,传送装置的状态变化。

  • 当Device完成一个命令,向主机报告指令完成的状态。

  • Device用于修改host中shadow block里的command register和control register。



(3) SDB(Set Device Bits)(A1h)

SDB的作用是Device用来改写host 的shadow register中的error或status的某些bits;

这些bits包括Error全部8 bits和Status中的6 bits,

SDB FIS不改变状态寄存器中的bit7 BSY(Busy)、bit3 DRQ(Data Request)。



下表中的“i”表示host在收到该FIS以后,如果shadow status register中BSY和DRQ位都为0时,host进入中断等待状态(实际上表明device进入中断等待状态)



(4) DMA Activate(39h)--Device to Host

DMA Active FIS的特性主要是:

  • Device发送该FIS同意主机以DMA方式向设备发送资料,

  • 是Device对主机DMA写命令的一个回应,

  • 当发送完FIS后,Device必须进入接收DMA资料接收状态, 

  • 每发送一个DMA DATA FIS后,要再次收到DMA Activate FIS才能发送下一个DMA DATA FIS; 



(5) DMA Setup(41h)--Bidirectional

进行DMA操作的第一步,目的是为了建立DMA操作参数。

发送方通过发送这个FIS,要求对方配置好DMA控制器,同时存储空间必须按要求处于准备状态。


     D bit为‘0’,代表发送方传送资料;

     D bit为‘1’,代表接收方传送资料, 传输时一方的D为1,另一方的D为0。

     DMA Transfer Count表示传输Bytes计数。



(6) PIO Setup(5Fh)--Device to Host

由设备发送给主机,告诉主机相关PIO操作参数,包括了在PIO传输前和传输后shadow register的内容。


  • 在PIO传输资料的过程中,Device必须先发送这个FIS给主机,表示Device准备好发送或接受数据。 

  • 与DMA传输一样,每传一个DATA FIS就要一个PIO SETUP FIS传输下一个DATA FIS; 



(7) DATA FIS(46h)--Bidirectional

DATA FIS比较简单,就是用来传输资料,比如说对硬盘的读写操作,

资料包的长度是不定的,除去SOF、EOF、CRC和FIS类型等标志外,最多2048个Dwords。 



(8) BIST Activate(58h)--Bidirectional

让对方进入测试模式,是一个双向可用的FIS,接收方以R_OK回应,完成测试工作之后就进入BIST交换状态了。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值