ATA接口寄存器描述
ATA接口寄存器描述
、ATA接口的三种数据传输方式
位。
)MDMA(Multiword DMA)传输,用于数据传输。ATA主机控制器向ATA设备下达MDMA传输命令后,等待设备向主机发送DMARQ数据传输请求信号。当主机收到DMARQ信号后,向设备发送DMACK_响应信号。MDMA数据传输过程与PIO方式大致相同,也是通过DIOW_或DIOR_的周期变化来控制数据的传输。在数据传输过程中,DMARQ和DMACK_握手信号一直保持有效。
)UDMA(Ultra DMA),也是用于数据传输。这种传输方式的传输速度比MDMA要快,ATA/ATAPI-5协议中所定义的UDMA传输方式最高数据传输速率是66MB/s。UDMA对数据传输的控制信号重新进行了定义。另外,UDMA还引入了CRC数据校验机制,保证了数据传输过程的正确性,但其传输过程较为复杂。
、ATA接口寄存器的定义
ATA主机与设备的通信是通过主机对ATA接口上的寄存器的读写实现的,而这些接口寄存器由主机发送的地址信号CS1_、CS0_、DA2、DA1、DA0来进行寻址。除了在DMA传输模式下,CS1_和CS0_全有效或全无效都是不可用的地址,在这种情况下,数据线应该在释放状态下(即数据总线没有驱动源)。当CS0_无效,CS1_有效时,DA[2:0]只有在值为06H和07H时地址才为有效,在其他的无效地址状态下,设备会使数据总线处于高阻态。
ATA接口寄存器可分为命令块寄存器和控制块寄存器。
)命令块寄存器是主机用来向设备传输命令或从设备读取状态的,这组寄存器包括:
位寄存器
位寄存器
设备/磁头(Device/Head)寄存器
扇区数(Sector Count)寄存器
扇区号(Sector Number)寄存器
命令(Command)寄存器
状态(Status)寄存器
特征(Features)寄存器
错误(Error)寄存器
数据(Data)寄存器。
)控制块寄存器是用来控制设备和替换状态,这组寄存器包括:
设备控制(Device Control)寄存器
替换状态(Alternate Status)寄存器
驱动器地址(Drive Address)寄存器
存储体寻址约束
以下是存储体开始反映命令的步骤:
1) 存储体不处于休眠状态;
2) 若存储体处于休眠状态,那么,即使DMACK-此时变为有效,存储体将忽略DIOW-/DIOR-变成有效。若存储体中,若执行包命令特性集,反映在表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,设备寄存器,扇区数,命令寄存器,状态寄存器,特性寄存器,错误寄存器,和数据寄存器。
控制寄存器用于控制和传递交替状态。该寄存器包含设备控制和交替状态寄存器;
每个寄存器的包含如下内容:
+++地址:
寄存器的CS和DA地址;
+++方向:
指明主机对寄存器是读还是写,只读,或只写;
+++存取约束:
指明什么时候才可以存取;
+++作用:
指明存取该寄存器的作用;
+++功能描述:
描述寄存器的功能;
+++区/位描述:
描述寄存器包含的内容;
5.2 交替状态寄存器(读):--与设备控制寄存器复用(写)
地址:
即:CS(1:0)=10;DA(2:0)=110;
方向:
这是只读寄存器,若地址被主机写,那么存储体控制寄存器为被写;
存取约束:
一旦,其他的位都不能用,当存储体处于休眠状态,该寄存器中的值无效;
作用:
读该寄存器不会清除一个终端等待;
功能描述:
该寄存器包含和状态寄存器同样的内容。
5.3 命令寄存器(写):--与状态寄存器复用(读)
地址:
即:CS(1:0)=01;DA(2:0)=111;
方向:
只写寄存器,若地址被主机写,表明状态寄存器处于被读的状态;
存取约束:
除了DEVICE RESET命令,其他的命令只有在BSY和DRQ都被清零并且DMACK-没有被设置为有效的情况下时写该寄存器,那么命令寄存器写的结果就是不确定的,除了DEVICE
RESET命令。一个处于休眠模式的存储体,若执行PACKET
命令特性集,除了DEVICE RESET命令,其他的命令写的寄存器的值都会被忽略。
作用:
当该命令寄存器被写完后,就开始执行命令,当这个寄存器被写,命令模块寄存器的内容就变成了这个命令的参数。写这个寄存器,会清除任何等待的中断条件;
功能描述:
该寄存器包含:发送给存储体的命令码;命令写到该命令寄存器后即刻执行命令,可执行的命令和买条命令的代码都总结在V2的附录中的表中。
区/位描述:
5.4数据端口
地址:
当DMACK-被设为有效,CS(1)-和CS(0)-都被设为无效,传递16位宽度的数据
即:CS(1:0)=00;
方向:
该端口是一个读/写端口;
存取约束:
该端口只用于DMA数据传输,当DMACK-和DMARQ都设为有效时;
作用:
DMA输出数据传输通过一系列的写这个端口来执行,每个写传输的数据都是在前一个写数据之后。DMA输入数据的传输被一系列的读端口执行;每个读传输的数据都是在前一个读之后,每次在读DMA输入数据和写DMA输出数据的结果都是无效的;
功能描述:
位宽度;
区或位描述:
5.5 数据寄存器:
地址:
即CS(1:0)=01;DA(2:0)=000;
方向:
读/写寄存器
存取的约束:
该寄存器,并且DMACK-没有被设为有效时;该寄存器的内容在休眠模式下无效;
作用:
PIO输出数据传输是通过一系列的写寄存器来完成的,每次写传输数据在上次之后;PIO输入数据传输是通过一系列的读该寄存器来完成,每次读传输数据在上次写之后。PIO输入期间的读或PIO输出期间的写的结果都是无效的。
功能描述:
该数据寄存器的宽度是16位;一个CFA存储体的PIO数据传输模式的数据宽度是8位,此时只用到了DD7~DD0.
区/位描述:
5.6设备寄存器
地址:
即:CS(1:0)=01;DA(2:0)=110;
方向:
读/写寄存器
存取约束:
只有在BSY和DRQ被清零,并且DMACK-被设为无效是可以写的。它的内容只有在BSY被清0时才有效。若BSY或DRQ被设为1的时候,写该寄存器,其结果将是无效的。若存储体在不执行PACKET命令特性命令设置,在休眠模式下,这个寄存器的内容无效,而在执行PACKET命令特性命令设置,在休眠模式下,这个寄存器的内容有效。
作用:
当这个寄存器被主机或存储体的信号写的时候,DEV变成有效,其他位变成命令的参数,当命令寄存器在被写的时候。
这个寄存器的第四位选择存储体,其他为示命令而定;
区/位描述
------Obsolete---表示这些位不用了,一些主机会设置这些位位1,但是存储体会忽略这些位;
------#表示这些位视命令而定;
——DEV,存储体选择,;
5.7 存储体控制寄存器
地址:
即:CS(1:0)=10,DA(2:0)=110;
方向:
这是个只写寄存器,若地址被主机读,那么交替状态寄存器在被主机读;
存取约束:
只有在DMACK-没有设为有效时,寄存器才可以被写;
作用:
在被写的时候,这个寄存器的值就会起作用
功能描述:
寄存器允许主机软复位连接的存储体,并且可以通过选择的存储体,使得INTRQ信号有效或无效;当设备控制寄存器被写的时候两个存储体都要响不管哪个存储体被选择。当SRST被设置为1两个存储体都要执行软复位协议。存储体在休眠模式应该响应SRST的信号。
区/位描述
——HOB(位寻址特性设置中定义,每次写命令寄存器都要清除HOB位位0;
——BIT(6:3),保留;
——SRST是软件复位位(参考6.2);
——,存储体应该释放INTRQ信号;
——BIT0应该被清零
5.8 错误寄存器
地址:
即:CS(1:0)=01;DA(2:0)=001;
方向:
这是个只读寄存器;若主机在写地址那么特性寄存器在被写入。
存取约束:
当BSY和DRQ被清零,并且ERR或
SE时,寄存器的内容是有效的。
在上电复位、执行完硬件、软件复位或者是执行完EXECUTE DEVICE DIAGNOSTICS或DEVICE RESET命令后,这个寄存器的内容应该是有效的。
当存储体在休眠状态时该寄存器的值无效。
作用:
无
功能描述:
在执行完所有的命令除了EXECUTE DEVICE DIAGNOSTICS或DEVICE RESET命令后,,该寄存器的内容将会有效。
在上电,硬复位,软复位后,或者执行完EXECUTE DEVICE DIAGNOSTICS或DEVICE RESET命令,该寄存器包含一个诊断码。
区/位描述:
注:
——第二位-ABRT被设为1表明命令执行失败,因为命令码或者命令参数不合法,不支持该命令,该命令的前提条件不满足,或出现其他故障;
——#,该位由命令决定;
5.9 特性命令寄存器--错误寄存器
地址:
即:CS(1:0)=01;DA(2:0)=001;
方向:
只写寄存器;若地址被主机读,那么错误寄存器在被主机读;
存取约束:
当BSY和DRQ等于0且DMACK-被设为无效的时候,应该写该寄存器;若BSY,或DRQ被设为0,那么写该寄存器的结果是无效的。
作用:
若命令寄存器被写,那么这个寄存器的内容就变成命令参数;
功能描述:
这个寄存器的值决定于命令的类型。
5.10
LBA高寄存器/字节记数高位寄存器
即:CS(1:0)=01;DA(2:0)=101;
方向:
读/写寄存器;
存取约束:
当BSY和DRQ被清0,并且DMACK-无效,寄存器可写。当BSY和DRQ被清0,寄存器的值有效。当BSY或DRQ被置1时,写寄存器,结果是无法确定的。在休眠模式时,寄存器的值无效。
作用:
命令寄存器被写入,寄存器的值为命令参数。
功能描述:
章)。
对于没有执行包命令特性设置的存储体,寄存器为LBA高寄存器。
对于有执行包命令特性值设置的存储体,寄存器为字节记数高位寄存器。
5.11
LBA低寄存器
方向:
读/写寄存器;
存取约束:
当BSY和DRQ被清0,并且DMACK-无效,寄存器可写。当BSY和DRQ被清0,寄存器的值有效。当BSY或DRQ被置1时,写寄存器,结果是无法确定的。在休眠模式时,寄存器的值无效。
作用:
命令寄存器被写入,寄存器的值为命令参数。
功能描述:
章)。
5.12
LBA中寄存器/字节记数低位寄存器
方向:
读/写寄存器;
存取约束:
当BSY和DRQ被清0,并且DMACK-无效,寄存器可写。当BSY和DRQ被清0,寄存器的值有效。当BSY或DRQ被置1时,写寄存器,结果是无法确定的。在休眠模式时,寄存器的值无效。
作用:
命令寄存器被写入,寄存器的值为命令参数。
功能描述:
章)。
对于没有执行包命令特性设置的存储体,寄存器为LBA中寄存器。
对于有执行包命令特性值设置的存储体,寄存器为字节记数低位寄存器。
5.13 扇区计数/中断响应寄存器
方向:
读/写寄存器;
存取约束:
当BSY和DRQ被清0,并且DMACK-无效,寄存器可写。当BSY和DRQ被清0,寄存器的值有效。当BSY或DRQ被置1时,写寄存器,结果是无法确定的。在休眠模式时,寄存器的值无效。
作用:
命令寄存器被写入,寄存器的值为命令参数。
功能描述:
章)。
对于没有执行包命令特性设置的存储体,寄存器为扇区计数。
对于有执行包命令特性值设置的存储体,寄存器为中断响应寄存器。
5.14 状态寄存器---命令寄存器(复用)
方向:
只读。如果写入地址,则为命令寄存器
存取约束:
如果BSY置1,寄存器的值将会被忽略,除位BSY外。在休眠模式时,寄存器的值无效。
作用:
当中断挂起后读这个寄存器会清0中断挂起位(参考第8章)。
当一个中断发生了,在主机能够识别信号INTRQ之前主机不能读状态寄存器,否则会清除挂起位,无法识别中断请求类型。
功能描述:
这个寄存器包含了设备状态,寄存器值会被更新反映当前设备的状态。
区/位描述:
--BSY(Busy)
BSY为1表示存储体忙。在主机写命令寄存器后,在命令完成前或是设备因覆盖命令而执行总线释放,存储体会设置BSY=1或DRQ=1。
ATA接口寄存器描述的更多相关文章
- ATA接口寄存器描写叙述
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mao0514/article/details/32135815 ATA接口寄存器描写叙述 .AT ...
- Systemverilog MCDF寄存器描述
前三个寄存器是读写寄存器(控制寄存器) (一)地址0x00 :32bit bit[0]通道使能,1打开,0关闭.复位1. bit[2:1]优先级,0最高 bit[5:3]数据包长度,是解码对应的. 0 ...
- GPIO相关寄存器描述和怎么配置
总寄存器图
- Android平台摄像头/屏幕/外部数据采集及RTMP推送接口设计描述
好多开发者提到,为什么大牛直播SDK的Android平台RTMP推送接口怎么这么多?不像一些开源或者商业RTMP推送一样,就几个接口,简单明了. 不解释,以Android平台RTMP推送模块常用接口, ...
- 嵌入式Linux内核I2C子系统详解
1.1 I2C总线知识 1.1.1 I2C总线物理拓扑结构 I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成.通信原理是通过对SCL和SDA线高 ...
- usb驱动开发7之接口描述符
前面struct usb_interface里表示接口设置的struct usb_host_interface被有意的飘过了,咱们在这节主要讲讲这个结构体,同样在include/linux/usb.h ...
- zabbix 在图形中显示网络设备的接口描述
zabbix原始模板没有提供来显示网络设备接口的描述,我们通常看到的图形显示是下面这样的: zabbix 3之后图形显示变化蛮大的,但我们乍一看,并不知道这个ethernet0/1是什么接口,网络设备 ...
- 通过IOCTL_ATA_PASS_THROUGH访问ATA设备接口
控制代码功能:像ATA硬盘发送ATA指令.IDE/ATA:接口,一个串行,一个并行,一般叫做IDE接口的硬盘和ATA接口的硬盘.ATA指令:可以操作ATA硬盘的指令. typedef struct _ ...
- android系统平台显示驱动开发简要:Samsung LCD接口篇『三』
平台信息: 内核:linux3.4.39系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新浪博 ...
随机推荐
- 解决AspNet Zero Core 5.0.1无法运行的问题
最近在研究AspNet Zero Core 5.0.1时发现VS点击调试后就自动退出了,从ABP QQ群里得知作者加入了licensecode校验.经过一个周左右断断续续的折腾,算是破解了吧.原本想把 ...
- ABP官方文档翻译 4.6 审计日志
审计日志 介绍 关于IAuditingStore 配置 通过特性启用/禁用 注意事项 介绍 维基百科:“审计追踪(也称为审计日志)是与安全相关的按时间先后的记录.记录集合.记录的目的地和源,提供一系列 ...
- ABP官方文档翻译 3.6 工作单元
工作单元 介绍 ABP中的连接和事务管理 传统的工作单元方法 控制工作单元 UnitOfWork特性 IUnitOfWorkManager 工作单元详情 禁用工作单元 无事务工作单元 一个工作单元方法 ...
- 深入理解Python字符编码--转
http://blog.51cto.com/9478652/2057896 不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError ...
- SSD trim及4k对齐
trim可以帮助减小SSD的写放大WA问题,删除文件后不仅仅是将文件标记为删除,而是在SSD空闲的时候统一进行删除. Linux下的trim支持叫discard,修改fstab文件,在挂载参数中加上d ...
- <转>年终盘点!2017年超有价值的Golang文章
马上就要进入2018年了,作为年终的盘点,本文列出了一些2017年的关于Go编程的一些文章,并加上简短的介绍. 文章排名不分先后, 文章也不一定完全按照日期来排列.我按照文章的大致内容分了类,便于查找 ...
- 洛谷 [P1169] [ZJOI2007] 最大的正方形
本题是一道求最大子矩阵的题,可以使用悬线法来做,因为是相邻的01矩阵,所以需要对悬线法进行改动. #include <iostream> #include <cstdio> # ...
- BZOJ 1396&&2865 识别子串[后缀自动机 线段树]
Description 在这个问题中,给定一个字符串S,与一个整数K,定义S的子串T=S(i, j)是关于第K位的识别子串,满足以下两个条件: 1.i≤K≤j. 2.子串T只在S中出现过一次. 例如, ...
- c# 利用IMap 收取163邮件
最近我要做一个爬虫.这个爬虫需要如下几个步骤: 1 填写注册内容(需要邮箱注册) 2 过拖拽验证码(geetest) 3 注册成功会给邮箱发一封确认邮箱 4 点击确认邮箱中的链接 完成注册 我这里就采 ...
- 面试陷阱1:Integer类型的比较
public class Test01 { public static void main(String[] args) { Integer f1 = 100, f2 = 100, f3 = 150, ...