如何阅读ATA-5协议文档
0赞ATA-5标准规范文档(下文简称ATA-5文档)是我工作以后用到的第一份比较全面而复杂的标准文档。这份文档,在我第一份工作近三年的时间内被我反复 的阅读和使用。在它的指导下,我完成了一款ATA设备端产品的维护、升级和另一款新产品的开发。正如对自己的第一份工作怀有深厚的感情一样,对ATA协 议,我也一直在关注着它的发展变化。
最近看到有网友说看了 ATA标准规范文档后不知道从何入手,这一困惑我也曾经有过。在这篇文章里,我就尝试着把ATA-5文档的大致结构捋一下,把文档中我熟悉的重点和难点部分标示出来。
ATA-5文档共分10个条款:
条 款2 提供了文档参考的其他规范。
条 款3 提供了文档中用到的名词定义、缩写定义和文档格式约定。
条 款4 包括了PATA接口的电气和机械特性。
条 款5 包括了PATA接口的信号描述。
条 款6 描述了ATA接口的概要的操作要求。
条 款7 包括了ATA接口的寄存器描述。
条 款8 包括了ATA接口的命令描述。
条 款9 包括了ATA接口的协议描述。
条 款10 包括了接口的时序图。
条款4、5是物理规范部分,描述了PATA设备的接口特性,是进行物理设计的参考;条款的7、8、9、10是逻辑规范部分,描述了ATA设备的行为特性, 是进行逻辑设计的参考;条款6是对ATA设备特征的一个概述,为后面4个章节做了铺垫。
ATA-5文档是从规范性和兼容性角度描述PATA协议的,内容是详细完整而自洽的。文档的内容包含了完成主机端或设备端硬件和软件设计的所有规范。但 是,从设计实现的角度看,文档的结构并不适合顺序地逐章阅读,原因是每一个条款的内容都很丰富,对于初次接触文档的读者来说,由于对协议的整体框架和 ATA接口要实现的功能没有整体的把握,很难理解每一个条款对于设计实现的意义所在,很难把文档的具体内容与设计实现过程中的各个主题联系起来,很容易看 了前面,忘记了后面,反复多次通读文档才能逐渐有所收获。
如果按照如下的顺序阅读ATA-5文档,就比较容易掌握文档的结构:
0. 在网络上查找对ATA接口的通俗解释和说明,弄清ATA接口的基本用途和功能。
1. 通读条款3,不要求对内容记忆深刻,只要求掌握条款3的结构,记得条款3都说过哪些内容即可。这么说,并不代表条款3的内容不重要;相反,条款3是最重要 的,在对文档整体熟悉后,进行设计实现时,必须按照条款3的要求对后续条款字斟字酌。由于条款3是为后续条款服务的,所以只有在阅读后续条款时它才有意 义。在阅读后续条款的过程中遇到问题时再返回条款3来查找,几次之后就烂熟于心了。
2. 精读条款6,选读条款8。精读条款6的目的是明确ATA设备都具备哪些功能,为后续条款的阅读做准备。精读要根据自己的设计实现要求有侧重点地进行。比如 只要求实现PIO,那么就可以略过DMA的相关内容;比如只要求兼容ATA,那么就可以略过ATAPI相关的Packet命令。初次阅读略过的内容,可以 在基本协议实现后,返回来阅读。可以不阅读6.7以后的各个小节。
精读条款6的6.4小节,就可以确定设计实现必须要实现的基本命令集,明确设计目标,也明确了后续条款的阅读目标。在此过程中,要参考条款 8中各条命令的描述部分,以明确各条命令的意义。在阅读完6.4小节之后,需要生成一个列表,该列表包括了要实现的所有命令及其对应的协议。命令和协议的 对应关系可以通过附录中的表格F.3获得。
3. 精读条款4和5。这两章,对PCB设计和FPGA引脚约束(位置、电平、电流强度)是至关重要的。这是整个板级设计成功的保证。没有稳定的物理接口这个基 础,FPGA实现和调试是不可能顺利的。这两个条款不要求反复阅读,只要求在PCB设计确定前读透读明白。对于FPGA设计者来说,UDMA相关的内容可 以在初次阅读时略去,在实现MDMA基本功能后返回来阅读;对PCB设计者来说,出于兼容性设计的考虑,UDMA相关的内容应该尽量读明白。
4. 精读条款9、8、7。要按照“先协议、后命令、最后寄存器”的逆序进行。协 议是一类命令的共同行为特性,掌握了一个协议,就可以掌握一类命令;明白了命令的输入和输出,就可以弄明白为什么要设置这些寄存器和寄存器的位意义。要打破条款的自然章节划分,按照协议及相关的命令和寄存器纵向阅读。比如9.4小节的 non-data命令协议对应了28条命令,所有这些命令都遵循同一个协议规定的简单行为;8.37小节的SET FEATURES命令属于non-data协议,8.37.8给出了该命令的描述,8.37.9 - 8.37.20给出了该命令的子命令介绍,8.37.4和8.37.5给出了该命令对应的输入输出寄存器;大部分寄存器的内容都是命令相关的,所以条款7 必须结合着条款8阅读才有意义;附录中的表格F.4给出了寄存器与物理引脚之间的关系。
明确了协议-命令-寄存器-引脚之间的关系,就可以着手进行逻辑实现了。
5. 通读条款10。这是对第一次阅读文档的要求。在进行逻辑实现时,必须详细阅读这一条款,明确主机与设备之间的物理握手,并明确各个时序参数该如何在具体设 计中得以实现。