博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ATA接口寄存器描写叙述
阅读量:5134 次
发布时间:2019-06-13

本文共 6085 字,大约阅读时间需要 20 分钟。

版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/mao0514/article/details/32135815

ATA接口寄存器描写叙述

 

3ATA接口的三种传输数据方式

 

1PIOProgrammable Input-Output)传输,能够分为PIO寄存器传输和PIO传输数据。PIO寄存器传输主要用于对ATA设备中的寄存器进行读写。读写的数据位数为8DD[7:0]ATA主机控制器依据所要读写的寄存器地址设置CS0_CS1_DA[2:0]地址信号,同一时候将DIOW_DIOR_设为有效,ATA主机控制器或ATA设备驱动数据总线释放数据。当DIOW_DIOR_撤销时。ATA主机控制器或ATA设备从数据总线上读取数据。对于PIO传输数据。所读写的地址为数据port。读写数据为16位。

2MDMAMultiword DMA传输,用于传输数据。ATA主机控制器向ATA设备下达MDMA传输命令后,等待设备向主机发送DMARQ传输数据请求信号。当主机收到DMARQ信号后。向设备发送DMACK_响应信号。MDMA传输数据过程与PIO方式大致相同,也是通过DIOW_DIOR_的周期变化来控制数据的传输。在传输数据过程中。DMARQDMACK_握手信号一直保持有效。

3UDMAUltra DMA)。也是用于传输数据。

这样的传输方式的传输速度比MDMA要快,ATA/ATAPI-5协议中所定义的UDMA传输方式最高传输数据速率是66MB/sUDMA对传输数据的控制信号又一次进行了定义。另外,UDMA还引入了CRC数据校验机制,保证了传输数据过程的正确性,但其传输过程较为复杂。

 

4ATA接口寄存器的定义

 

ATA主机与设备的通信是通过主机对ATA接口上的寄存器的读写实现的,而这些接口寄存器由主机发送的地址信号CS1_CS0_DA2DA1DA0来进行寻址。除了在DMA传输模式下,CS1_CS0_全有效或全无效都是不可用的地址。在这样的情况下。数据线应该在释放状态下(即数据总线没有驱动源)。

CS0_无效,CS1_有效时,DA[2:0]仅仅有在值为06H07H时地址才为有效,在其它的无效地址状态下,设备会使数据总线处于高阻态。

ATA接口寄存器可分为命令块寄存器和控制块寄存器。

1)命令块寄存器是主机用来向设备传输命令或从设备读取状态的,这组寄存器包括:

柱面号高(Cylinder High8位寄存器

柱面号低(Cylinder Low8位寄存器

设备/磁头(Device/Head)寄存器

扇区数(Sector Count)寄存器

扇区号(Sector Number)寄存器

命令(Command)寄存器

状态(Status)寄存器

特征(Features)寄存器

错误(Error)寄存器

数据(Data)寄存器。

2)控制块寄存器是用来控制设备和替换状态,这组寄存器包括:

设备控制(Device Control)寄存器

替换状态(Alternate Status)寄存器

驱动器地址(Drive Address)寄存器

 

存储体寻址约束

下面是存储体開始反映命令的步骤:

1) 存储体不处于休眠状态;

2) 若存储体处于休眠状态。那么,即使DMACK-此时变为有效。存储体将忽略DIOW-/DIOR-变成有效。

若存储体不支持包命令特性集。那么存储针对命令的反映在表41中。若运行包命令特性集。反映在表42

 

存储体被选择意味着DEV位相应的逻辑设备号码。

在设备被选择和DMACK-被置为有效,时仅仅用于Multiword DMA,不能用于超DMA;

注:DIOX-栏除外。A=置为有效,N=置为无效,Z=释放。X=不在乎;

DIOX-栏中:R=DIOR-被置为有效,W=DIOW-被置为有效,X=要么DIOR-要么DIOW-被置为有效

 

 

 

 

 

 

5     I/O寄存器描写叙述

5.1 概述

命令寄存器用于发送命令到存储体或将存储体的状态发送给主机;该寄存器包好高位的LBA,中位LBA,设备寄存器,扇区数,命令寄存器,状态寄存器,特性寄存器,错误寄存器,和数据寄存器。

控制寄存器用于控制和传递交替状态。

该寄存器包括设备控制和交替状态寄存器;

每一个寄存器的包括例如以下内容:

+++地址:           寄存器的CSDA地址。

+++方向:           指明主机对寄存器是读还是写,仅仅读,或仅仅写;

+++存取约束:    指明什么时候才干够存取。

+++作用:           指明存取该寄存器的作用;

+++功能描写叙述:    描写叙述寄存器的功能。

+++/位描写叙述:   描写叙述寄存器包括的内容

 

5.2 交替状态寄存器():--与设备控制寄存器复用(写)

地址:

即:CS10=10DA20=110

方向:

这是仅仅读寄存器。若地址被主机写,那么存储体控制寄存器为被写

存取约束:

一旦BSY被设为1,其它的位都不能用,当存储体处于休眠状态。该寄存器中的值无效。

作用:

读该寄存器不会清除一个终端等待

功能描写叙述:

该寄存器包括和状态寄存器相同的内容

5.3 命令寄存器(写):--与状态寄存器复用(读)

地址:

即:CS10=01DA20=111

方向:

仅仅写寄存器。若地址被主机写,表明状态寄存器处于被读的状态;

存取约束:

除了DEVICE RESET命令,其它的命令仅仅有在BSYDRQ都被清零而且DMACK-没有被设置为有效的情况下该寄存器。若在BSYDRQ被设为1时写该寄存器,那么命令寄存器写的结果就是不确定的。除了DEVICE RESET命令。一个处于休眠模式的存储体,若运行PACKET 命令特性集,除了DEVICE RESET命令。其它的命令写的寄存器的值都会被忽略。

作用:

当该命令寄存器被写完后,就開始运行命令,当这个寄存器被写,命令模块寄存器的内容就变成了这个命令的參数。

写这个寄存器,会清除不论什么等待的中断条件;

功能描写叙述:

该寄存器包括:发送给存储体的命令码;命令写到该命令寄存器后即刻运行命令。可运行的命令和买条命令的代码都总结在V2的附录中的表中。

/位描写叙述:

 

5.4数据port

地址:

DMACK-被设为有效,CS1-CS0-都被设为无效,传递16位宽度的数据

即:CS10=00

方向:

该port是一个读/写port;

存取约束:

该port仅仅用于DMA传输数据,当DMACK-DMARQ都设为有效时。

作用:

DMA输出传输数据通过一系列的写这个port来运行,每一个写传输的数据都是在前一个写数据之后。

DMA输入数据的传输被一系列的读port运行;每一个读传输的数据都是在前一个读之后,每次在读DMA输入数据和写DMA输出数据的结果都是无效的;

功能描写叙述:

数据port是16位宽度;

区或位描写叙述:

 

5.5 数据寄存器:

地址:

CS10=01DA20=000

方向:

/写寄存器

存取的约束:

该寄存器仅仅用于PIO传输数据,当DRQ被设为1,而且DMACK-没有被设为有效时;该寄存器的内容在休眠模式下无效;

作用:

PIO输出传输数据是通过一系列的写寄存器来完毕的,每次写传输数据在上次之后;PIO输入传输数据是通过一系列的读该寄存器来完毕,每次读传输数据在上次写之后。PIO输入期间的读或PIO输出期间的写的结果都是无效的。

功能描写叙述:

该数据寄存器的宽度是16位。一个CFA存储体的PIO传输数据模式的数据宽度是8位,此时仅仅用到了DD7~DD0.

/位描写叙述:

5.6设备寄存器

地址:

即:CS10=01DA20=110

方向:

/写寄存器

存取约束:

仅仅有在BSYDRQ被清零,而且DMACK-被设为无效是能够写的。它的内容仅仅有在BSY被清0时才有效。若BSYDRQ被设为1的时候。写该寄存器,其结果将是无效的。

若存储体在不运行PACKET命令特性命令设置,在休眠模式下,这个寄存器的内容无效。而在运行PACKET命令特性命令设置,在休眠模式下,这个寄存器的内容有效。

作用:

当这个寄存器被主机或存储体的信号写的时候。DEV变成有效,其它位变成命令的參数。当命令寄存器在被写的时候。

这个寄存器的第四位选择存储体,其它为示命令而定;

/位描写叙述

------Obsolete---表示这些位不用了。一些主机会设置这些位位1,可是存储体会忽略这些位;

------#表示这些位视命令而定

——DEV,存储体选择,0选存储体0,为1选存储体1

 

5.7 存储体控制寄存器

地址:

即:CS10=10DA20=110

方向:

这是个仅仅写寄存器。若地址被主机读,那么交替状态寄存器在被主机读。

存取约束:

仅仅有在DMACK-没有设为有效时,寄存器才干够被写;

作用:

在被写的时候,这个寄存器的值就会起作用

功能描写叙述:

寄存器同意主机软复位连接的存储体,而且能够通过选择的存储体,使得INTRQ信号有效或无效;当设备控制寄存器被写的时候两个存储体都要响无论哪个存储体被选择。

SRST被设置为1两个存储体都要运行软复位协议。存储体在休眠模式应该响应SRST的信号。

/位描写叙述

——HOB命令字节的高位)在48位寻址特性设置中定义,每次写命令寄存器都要清除HOB位位0

——BIT63),保留。

——SRST是软件复位位(參考6.2)。

——nIEN存储体使主机INTRQ信号有效的使能

当被选择的存储体的nIEN位被清零,那么应该通过一个三态缓冲使INTRQ有效,而且依据存储体适当地启动有效或无效。当被选择的存储体的nIEN位被置为1。存储体应该释放INTRQ信号;

——BIT0应该被清零

 

5.8 错误寄存器

地址:

即:CS10=01DA20=001

方向:

这是个仅仅读寄存器;若主机在写地址那么特性寄存器在被写入。

存取约束:

BSYDRQ被清零,而且ERR SE被置为1。寄存器的内容是有效的。

在上电复位、运行完硬件、软件复位或者是运行完EXECUTE DEVICE DIAGNOSTICSDEVICE RESET命令后,这个寄存器的内容应该是有效的

当存储体在休眠状态时该寄存器的值无效

作用:

功能描写叙述:

在运行全然部的命令除了EXECUTE DEVICE DIAGNOSTICSDEVICE RESET命令后,若状态寄存器的ERR位被置为1,该寄存器的内容将会有效

在上电。硬复位。软复位后,或者运行完EXECUTE DEVICE DIAGNOSTICSDEVICE RESET命令,该寄存器包括一个诊断码。

/位描写叙述:

注:

——第二位-ABRT被设为1表明命令运行失败。由于命令码或者命令參数不合法,不支持该命令,该命令的前提条件不满足。或出现其它故障;

——#。该位由命令决定。

5.9 特性命令寄存器--错误寄存器

地址:

即:CS10=01DA20=001

方向:

仅仅写寄存器;若地址被主机读,那么错误寄存器在被主机读;

存取约束:

BSYDRQ等于0DMACK-被设为无效的时候,应该写该寄存器;若BSY,DRQ被设为0。那么写该寄存器的结果是无效的。

作用:

若命令寄存器被写,那么这个寄存器的内容就变成命令參数。

功能描写叙述:

这个寄存器的值决定于命令的类型

 

5.10 LBA寄存器/字节记数高位寄存器

即:CS10=01DA20=101

方向:

/写寄存器;

存取约束:

BSYDRQ被清0,而且DMACK-无效,寄存器可写。

BSYDRQ被清0,寄存器的值有效。

BSYDRQ被置1时。写寄存器,结果是无法确定的。

在休眠模式时,寄存器的值无效。

作用:

命令寄存器被写入。寄存器的值为命令參数。

功能描写叙述:

寄存器的值决定于命令的类型(參考第6章)。

对于没有运行包命令特性设置的存储体,寄存器为LBA高寄存器。

对于有运行包命令特性值设置的存储体,寄存器为字节记数高位寄存器。

 

5.11 LBA寄存器

 

方向:

/写寄存器。

存取约束:

BSYDRQ被清0。而且DMACK-无效,寄存器可写。

BSYDRQ被清0,寄存器的值有效。

BSYDRQ被置1时,写寄存器,结果是无法确定的。在休眠模式时,寄存器的值无效。

作用:

命令寄存器被写入,寄存器的值为命令參数。

功能描写叙述:

寄存器的值决定于命令的类型(參考第6章)。

 

5.12 LBA寄存器/字节记数低位寄存器

方向:

/写寄存器;

存取约束:

BSYDRQ被清0,而且DMACK-无效,寄存器可写。当BSYDRQ被清0,寄存器的值有效。

BSYDRQ被置1时,写寄存器。结果是无法确定的。

在休眠模式时,寄存器的值无效。

作用:

命令寄存器被写入,寄存器的值为命令參数。

功能描写叙述:

寄存器的值决定于命令的类型(參考第6章)。

对于没有运行包命令特性设置的存储体,寄存器为LBA中寄存器。

对于有运行包命令特性值设置的存储体,寄存器为字节记数低位寄存器。

 

5.13 扇区计数/中断响应寄存器

方向:

/写寄存器;

存取约束:

BSYDRQ被清0。而且DMACK-无效。寄存器可写。当BSYDRQ被清0。寄存器的值有效。当BSYDRQ被置1时。写寄存器,结果是无法确定的。在休眠模式时。寄存器的值无效。

作用:

命令寄存器被写入。寄存器的值为命令參数。

功能描写叙述:

寄存器的值依赖于命令类型(參考第6章)。

对于没有运行包命令特性设置的存储体,寄存器为扇区计数

对于有运行包命令特性值设置的存储体,寄存器为中断响应寄存器

 

5.14 状态寄存器---命令寄存器(复用)

方向:

仅仅读。假设写入地址。则为命令寄存器

存取约束:

假设BSY1,寄存器的值将会被忽略。除位BSY外。在休眠模式时,寄存器的值无效。

作用:

 

其中断挂起后读这个寄存器会清0中断挂起位(參考第8章)。

当一个中断发生了,在主机能够识别信号INTRQ之前主机不能读状态寄存器。否则会清除挂起位,无法识别中断请求类型。

功能描写叙述:

这个寄存器包括了设备状态,寄存器值会被更新反映当前设备的状态。

/位描写叙述:

--BSYBusy

BSY1表示存储体忙。

在主机写命令寄存器后,在命令完毕前或是设备因覆盖命令而运行总线释放。存储体会设置BSY=1DRQ=1

 

转载于:https://www.cnblogs.com/ldxsuanfa/p/10689256.html

你可能感兴趣的文章
C++ 实践总结
查看>>
composer 国内镜像配置
查看>>
软件是天时、地利、人和的产物!
查看>>
python定时清空本目录下除本脚本外的全部文件
查看>>
【PHP】在目标字符串指定位置插入字符串
查看>>
【JS】jQuery设置定时器,访问服务器(PHP示例)配合微信、支付宝原生支付,跳转web网页...
查看>>
实验四2
查看>>
VS2012+Win7网站发布详细步骤
查看>>
Android现学现用第十一天
查看>>
Bin Packing 装箱问题——NPH问题的暴力枚举 状压DP
查看>>
多路复用
查看>>
python 列表
查看>>
Python数据可视化之Pygal(雷达图)
查看>>
当前主流读取Excel技术对比
查看>>
js-格式化数字保留两位小数-带千分符
查看>>
【Java】forward & redirect 的差异
查看>>
Java学习笔记--字符串和文件IO
查看>>
【BZOJ1951】古代猪文(CRT,卢卡斯定理)
查看>>
poj 2823 线段树
查看>>
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>