发新话题
打印

IDE命令简介

IDE命令简介


IDE命令简介 8 h( V% F0 a7 ^
    在ATA标准中定义了近四十种IDE命令,其中十种为基本的(或叫强制性的),其他是可选的。 + ]* b, Q6 T' ]8 t9 s8 R2 L: h
    1.部分基本IDE命令的功能 ! E1 h6 r0 r4 c* V! I; D
    以下命令名后面括号中数字为该命令的控制代码。
$ N! y8 k& `- x+ C    ①驱动器诊断(90H):该命令启动驱动器内部的诊断程序。 8 g5 Y8 r' I# e* y$ u  D' i
    ②格式化磁道(50H):该命令用来格式化一个磁道。扇区数寄存器、柱面号寄存器、驱动器/磁头寄存器必须设置成规定的值, 8 b8 T' I1 u' x+ E0 k/ |
    ③扇区读(20H允许重试,2lH禁止重试):使用该命令从磁盘读取一个指定的扇区。在读的过程中如果发生错误,接下来的处理则取决于是否允许重试。如果使用禁止重试命令(21H),则操作将被禁止,反之,驱动器将重读出错的扇区,重复的次数由制造商决定。
. l" Y: W+ [9 T$ J6 R    ④扇区写(30H允许重试,3lH禁止重试):该命令类似于读命令,只是数据传送的方向不同。 8 \; K& j4 A8 \8 b8 m6 |
    ⑤扇区长读(22H允许重试,23H禁止重试):与扇区读命令不同点在于,读时还包括扇区的ECC(Error Correction Code)字节。 / n# M& T* t/ A% r
    ⑥扇区长写(32H允许重试,33H禁止重试):与扇区写命令的区别在于ECC字节也要写入。
9 ~+ ^0 U6 \) L0 f" E$ ^9 \7 \7 o    ⑦寻道(7XH):该命令使磁头移动到地址寄存器指定的磁道上。 " e1 ?+ o5 q$ u1 d( z! m/ r1 r
    ⑧扇区校验(40H允许重试,4lH禁止重试):与扇区读命令相似,不传送数据,只对读出的数据进行校验。
3 r! }+ a" [# h/ N1 l  2.部分可选IDE命令的功能
9 V( c! G1 o' A% T' n6 V" z8 w( o  ①DMA方式读(C8H允许重试,C9H禁止重试):该命令与扇区读类似,只是它使用DMA方式读扇区缓冲区的内容。在执行该命令前,应初始化相应的DMA通道。
5 \4 k: g, w5 K/ o; E  ②DMA方式写(CAH允许重试,CBH禁止重试):该命令与扇区写类似,只是向扇区缓冲区写入数据时使用DMA方式。 0 c4 i! b% f. R1 Y" |  _
    ③设置多扇区模式(C6H):用该命令设定多扇区操作时的扇区数。 0 X5 T! L4 _) [
    ④多扇区读(C4H):它与扇区读类似,但按块读取,一块内包括多个扇区,只有当请求的多个扇区全部读完后才产生中断。 6 q2 f. X. W# V$ U, `
⑤多扇区写(C5H):除数据传送方向外,该命令的其他操作与多扇区读命令相同。 3.IDE命令的执行过程 + E) \7 A& o' t. {& T& y( K3 D0 e
    让驱动器执行IDE命令需要有一个过程。在发命令前先应做一些准备,即对有关寄存器进行设置,命令发出后,要读取状态寄存器,判断规定的操作是否完成,有无错误,如有错误,还需作出相应的处理。ATA标准关于IDE命令的执行一共有五个协议。它们是PI协议——针对PIO方式读命令、PO协议——针对PIO方式读命令、ND协议——针对没有数据传输的命令、DM协议——针对使用DMA数据传输的命令、VS协议——商家确定的协议。与此相对应,ATA标准将IDE命令分成了五类。这里仅以PI协议命令和PO协议命令为例说明IDE命令的执行过程。
* p% U2 N. b& X- O8 s    (1)PI协议命令的执行过程     
. R4 @2 u/ v$ y9 h    PI(PIO In)协议是针对PIO方式读命令的。PIO方式读命令包括对扇区及缓冲区的一次或多次读等多个命令,可将它们统称为PI协议命令。按照协议,该类命令应该按下面的过程执行。首先,主机把执行命令过程中所需要的所有参数写入地址寄存器(1F3H~1F6H)和特性寄存器(如果需要),然后把命令码写入命令寄存器,命令开始执行。这时驱动器设置状态寄存器中的BSY信号,同时将磁盘上指定扇区的数据送入扇区缓冲区。当扇区缓冲区准备好,置位DRQ,清BSY,发中断请求信号INTRQ。操作时序如图10.19所示。
/ T, y; l4 j! ]8 T0 g: k
% [! l/ e0 o2 A+ Z7 X* A9 S
4 n! @) |* u+ O) a8 }3 v" H$ \. A; _0 [$ \

3 l# f8 o; x+ k" J: }2 L ! i3 w) w$ X% J
    然后,主机开始读取状态寄存器,同时驱动器清除中断请求信号INTRQ。如果状态寄存器的DRQ位为1,主机就从扇区缓冲区读取数据。数据读完后,驱动器复位DRQ位。如果是多扇区读(前面设置时,还要设置扇区数寄存器),此时驱动器就重新设置BSY位,准备读下一个扇区,直到请求的扇区全部读完。 3 n+ n4 v* x5 E" X- l$ Q, E
    在读的过程中,如果发生了错误,驱动器仍然准备读下一个扇区,同时设置状态寄存器中的出错位,让主机决定是否继续进行。 9 m+ Z' i1 p6 f  b8 P
    2.PO协议命令的执行过程
( V: l3 U4 N7 y- W; j6 Q; t7 h    PO(PIO Out)协议是针对:PIO方式写命令的。按照协议,该类命令应该按下面的过程执行。首先,主机把必要的参数写入对应的地址寄存器,等待DRDY有效,然后将命令码写入命令寄存器,此时驱动器设置状态寄存器的DRQ位,表示准备接收数据。主机通过数据寄存器将数据写入扇区缓冲区,当扇区缓冲区填满时,驱动器清除DRQ位,并置位BSY。驱动器开始将扇区缓冲区中的数据写入磁盘。一旦写盘结束,它会马上清除BSY位,并发出中断请求信号INTRQ。主机接收到中断信号后,读驱动器的状态寄存器,同时将中断信号清除。如果是写一个扇区,则写命令到此结束。如果是多扇区写,此时驱动器会重新设置DRQ,开始处理下一个扇区。PIO方式写操作的时序如图10.20所示。
  s  ~' @1 q1 C! n& H5 K4 K$ o) Z; Q% S2 [& Y6 Q4 `

4 }+ [9 v; }, a. C" \% ]2 x. F" G$ @0 e& _
9 r1 j6 Q5 z$ V7 v) B$ X
* X. w+ J, [5 n
    从上面的PI协议命令和PO协议命令的执行过程可以看到,对磁盘介质的读或写是由驱动器具体完成的,   



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题