在“计算机接口技能”教育中, 有关硬磁盘接口适配器这一章比较难学, 首要触及到I?O 操控层对扇区读写和运用逻辑映射层对数据进行办理问题,内容比较笼统, 教师和学生只能凭幻想去教与学。笔者在科研中, 经过对嵌入式微处理器与硬盘接口的开发运用, 加深了对这些内容的了解, 为拓宽这部分教育内容的深度和广度奠定了根底, 并选用理论与实践结合的办法去教育有关的内容, 受到了学生的欢迎。故撰此文与从事硬盘接口技能教育的教师们作一沟通。
1 ARM 体系及IDE 接口总述
ARM (A dvanced RS IC M ach ines) 是一种低功耗、高性能的32 位处理器。本文介绍的体系是依据Sam sung 公司S3C44B0X 构建而成。该CPU 的内核是ARM 7TDM I, 选用了三级流水线和VON N eumann 结构, 而且具有UART、IIC、IIS、S IO 接口,ADC、PWM 通道, 实时时钟、LCD 操控器等。
硬盘接口结构首要分I/O 操控层和逻辑映射层。其间I/O 操控层包含与ARM 的物理接口, 完成对硬盘状况的查询、设置和对扇区的读写。它是依据A TA 规范衔接的IDE 接口。经过IDE 接口挑选可编程的P IO 或运用DMA 办法传输数据。本文将介绍P IO 办法传送, 即对硬盘每一次拜访都需求别离进行编程.
逻辑映射层完成对目录、文件与扇区数据逻辑映射, 以及数据的存储和修正。该部分运用微软公司FA T 规范, 为每个文件的磁盘块结构链接表, 经过链接表和它的索引完成对整个磁盘文件进行办理。
在微机运用中, 因为常触及大批量数据的存储,在联网条件不备的情况下, 经过IDE 接口衔接大容量硬盘是一个有用办法。若依照AN S I 的A TA 规范衔接硬盘, 并经过Fat32 文件体系进行数据办理,嵌入式体系读写过的硬盘, 还能够脱机移到W in2dow s 操作体系支持下的PC 机中, 完成与惯例操作体系同享硬盘数据资源。本文介绍的办法能够推行到其它微处理器运用体系中。
2 硬件结构与I/O 操控层
A TA 规范对IDE 硬盘接口作了详细描述。
图1 是依照A TA 规范结合P IO 传输特色进行衔接。因为没有运用DMA 传输办法, 故DMARQ 和DMACK 两根悬空; / IOCS16 用于挑选运用DD0~DD15 进行16 位传输或运用DD0~DD7 进行8 位传输; /D IOR 和/D IOW 是对磁盘驱动寄存器进行读写操作的一对握手信号; /C S0 用来选定指令寄存器组, /C S1 挑选操控寄存器组。这两根信号线结合DA 0~DA 2, 就能够对IDE 多个寄存器进行拜访,如数据寄存器、状况寄存器、指令寄存器等。
此外,A TA 规范对IDE 指令也有严厉界说, 如用来承认驱动器的0xEC, 读缓冲区的0xE4。在P IO形式中, 体系将IDE 指令送到指令寄存器中, 读写相应的数据、状况寄存器, 完成对硬盘拜访和操控。
对硬盘内部数据的操作需求了解它的物理存储办法。磁头、柱面和扇区是硬盘的根本结构, 而扇区是对硬盘读写的最小单位。硬盘内部的寻址办法有两种, 一种是物理寻址的CHS 办法, 另一种是逻辑寻址的LBA 办法。物理寻址CHS 办法是经过柱面、磁头和扇区号来确认仅有的存储单位, 较为繁琐。而逻辑寻址办法是选用线性映射办法, 从物理结构到逻辑块编号的映射联系如下:
LBA = (柱面编号×磁头数+ 磁头号) ×扇区数+ 扇区编号- 1
选用这种办法, 主机不必知道硬盘的物理结构, 就能直接对方针扇区进行寻址。
依据前面的论述, 编制I/O 操控层的操控程序, 可对IDE 操控寄器进行查询、设置和逻辑寻址,完成对指定扇区的读写。图2 是读一个扇区数据的流程图, 写扇区的办法和它相似, 差异仅仅在于传送指令和数据活动方向不同。此外, 在检测状况寄存器的时分, 最好加上超时判别, 避免程序堕入死循环。
3 逻辑映射层操控规范及完成
3.1 关于FAT 规范
因为期望ARM 体系对硬盘的读写操作能与干流操作体系同享, 该部分软件是依据与W indow s 相兼容的FA T 规范进行编制。用户也能够依据实践情况, 把该规划思路推行到如L inux 下的EX2 等其它作业渠道。
FA T 规范对硬盘逻辑结构作了区分, 首要有分区表、BPB 表、FA T 表、数据区等几部分。在硬盘格式化和分区后, 会在0 柱面0 磁头1 扇区树立分区表, 此表记载了硬盘在各分区开始和完毕所运用的磁头、柱面、扇区号。关于每个分区, 逻辑0 扇区寄存了一个BPB 表, 该表贮存了整个文件体系要害的数据, 包含文件体系的类型, 每个扇区的字节数(Byte2PerSec ) , 每簇的扇区数(SecPerClu s) , 保存扇区数(R svdSecCn t) , FA T 表数目(N umFA T s) , 根目录开始簇(Roo tClu s) , 以及盘符和卷标等。其间簇(Clu STer) 是文件体系在功率准则下办理的最小单位, FA T 32 规范意味着每簇有8 扇区, 簇内存贮单元选用32 位二进制数。文件体系类型还能够运用FA T 12 和FA T 16 规范, 表明簇内存贮单元别离选用12 位和16 位二进制数。在格式化硬盘时, 依据硬盘簇的数目判别选用哪种文件体系规范, 若簇数小于4085 则是FA T 12, 若在4085 和65525 之间则是FA T 16, 大于65525 则是FA T 32。因为本文所述的体系运用大容量硬盘, 因此选用FA T 32 文件体系。
在原理上, FA T 32 和其它两种办法是相同的, 完全能够移植曩昔。保存扇区是为BPB 表今后扩展保存一段区间, 暂时未被运用。
3.2 关于FAT 表
FA T 表实质上是一系列寄存着数据的链接表。
关于FA T 32 来说, 每四个字节(32b it) 对应硬盘数据区上的一个簇, 它们的数值是当时文件下一个簇的指针。假如这四个字节大于0x0FFFFFF8, 则表明当时文件在该簇内完毕。若是0x00 则表明该簇是空的, 没有寄存数据, 而0xFFFFFF7 表明这个簇现已损坏。选用这种办法, 在存取数据时只需沿着链接表寻址就行了, 不需按次序存取, 也不会因删去文件形成磁盘碎片。FA T 表的巨细是依据磁盘容量也便是簇的数量来决议, 不同磁盘FA T 表的巨细不同。