IDE接口硬盘读写技术
时间:2025-04-21
时间:2025-04-21
IDE接口硬盘读写技术
第31卷 第6期 电 子 科 技 大 学 学 报 Vol.31 No.6 2002年12月 Journal of UEST of China Dec. 2002
IDE接口硬盘读写技术
徐小玲*
(浙江教育学院计算机系 杭州 310012)
【摘要】分析了IDE接口硬盘控制寄存器模型;论述了IDE接口硬盘的读写几项技术;给出了设计硬盘克
隆软件的思想和方法,方法针对硬盘物理扇区进行读写,与硬盘上安装的具体操作系统的类型无关,并与硬
盘驱动器的物理结构无关。结合C语言与汇编语言,经实际应用验证,方法简便,具有较强的实用性。
关 键 词 IDE接口; 硬盘控制寄存器; LBA寻址; ATA标准
中图分类号 TP302
Technology of Read-Write IDE Interface Hard Disk
Xu Xiaoling
(Department of Computers, ZheJiang Education College HangZhou 310012)
Abstract This paper analyse the model of controller registers for IDE interface hard disk
drive, summarized some key technic about read-write hard disk drive and a design about clone hard disk. We can directly read-write the sector ,and it has no concern with operating system and the structure of hard disk drive. Combine with C and Assemble language, We give an realy application . the method is easy and useful.
Key words IDE interface; hard disk control register; LBA seek; ATA standard
硬盘读写是一个复杂的过程,它涉及到硬盘的接口方式、寻址方式、控制寄存器模型等。硬盘的存储介质经历了从磁性材料、光磁介质到Flash半导体存储材料,对它们的读写方法和寻址方式都一样,因为这些存储介质与计算机的接口共同遵循着ATA标准。主机与硬盘之间的数据传输按程序I/O或DMA方式进行,硬盘的寻址方式可按CHS或LBA。在计算机应用中,掌握硬盘读写技术很有必要, 像UNIX系统的dd命令和目前流行的Ghost、DiskEdit等软件,都可以把数十个GB容量硬盘上庞大的软件系统,在短时间内复制完成。这些工具软件的构造正是基于该技术而设计的。本文从IDE控制器的寄存器模型入手,分析硬盘的读写方法和寻址方式,结合实例剖析了这类复杂硬盘工具软件的设计思路及制作方法。
1 IDE控制器的寄存器模型
计算机主机对IDE接口硬盘的控制是通过硬盘控制器上的二组寄存器实现[1]。一组为命令寄存器组(Task File Registers),I/O的端口地址为1F0H~1F7H,其作用是传送命令与命令参数,如表1所示。另一组为控制/诊断寄存器(Control/Diagnostic Registers),I/O的端口地址为3F6H~3F7H,其作用是控制硬盘驱动器,如表2所示。 2002年4月23日收稿
* 女 39岁 大学 讲师
IDE接口硬盘读写技术
第6期 徐小玲: IDE接口硬盘读写技术
表1 Task File Registers命令寄存器组
I/O地址
1F0H
1F1H
1F2H
1F3H
1F4H
1F5H
1F6H
1F7H 读(主机从硬盘读数据) 数据寄存器 错误寄存器(只读寄存器) 扇区计数寄存器 扇区号寄存器或LBA块地址0~7 磁道数低8位或LBA块地址8~15 磁道数高8位或LBA块地址16~23 驱动器/磁头或LBA块地址24~27 状态寄存器 写(主机数据写入硬盘) 数据寄存器 特征寄存器 扇区计数寄存器 扇区号或LBA块地址0~7 磁道数低8位或LBA块地址8~15 磁道数高8位或LBA块地址16~23 驱动器/磁头或LBA块地址24~27 命令寄存器 637
表2 Control/Diagnostic Registers控制/诊断寄存器
I/O地址
3F6H
3F7H 读 交换状态寄存器(只读寄存器) 驱动器地址寄存器 写 设备控制寄存器(复位)
在硬盘执行读写过程中,为了节省I/O地址空间,用相同的地址来标识不同的寄存器。例如,如表1中端口地址1F7H,在向硬盘写入数据时作为命令寄存器,而向硬盘读取数据时作为状态寄存器。表1中各寄存器功能如下:
数据寄存器:是主机和硬盘控制器的缓冲区之间进行8位或16位数据交换用的寄存器,使用该寄存器进行数据传输的方式称程序输入输出方式,即PIO方式,数据交换的另一种方式是通过DMA通道,这种方式不使用数据寄存器进行数据交换;
错误寄存器:该寄存器包含了上次命令执行后硬盘的诊断信息。每位意义见表3,在启动系统、硬盘复位或执行硬盘的诊断程序后,也在该寄存器中保存着一个诊断码。
表3 IDE错误寄存器
位 意 义
0 AMNF,没找到所要访问的扇区的数据区。
1 TK0NF,在执行恢复RECALIBRATE命令时,0磁道没有发现。
2 ABRT,对硬盘发非法指令或因硬盘驱动器故障而造成命令执行的中断。
3 MAC,该信号用来向主机发出通知,表示介质的改变。
4 IDNF,没有找到访问的扇区,或CRC发生错误。
5 MC, 这是发送给主机一个信号以通知主机使用新的传输介质。
6 UNC,在读扇区命令时出现不能校正的ECC错误,因此此次数据传输无效。
7 BBK,在访问扇区的ID数据场发现坏的数据块时会置1。
下面的扇区数寄存器、磁道数寄存器、驱动器/磁头寄存器三者合称为介质地址寄存器,介质地址可以用CHS方式或LBA方式,在驱动器/磁头寄存器中指定用何种方式。
扇区计数寄存器:指明所要读/写的扇区总数,其中0表示传输256个扇区,如果在数据读写过程发生错误,寄存器将保存尚未读写的扇区数目。
磁道数寄存器:指明 …… 此处隐藏:4408字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:30以内加减法练习题
下一篇:浅谈岩土工程技术及其发展现状