- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AT硬盘控制器编程
由Hi_Cracker整理自赵炯老师的《Linux内核完全注释》 @whu
1,AT硬盘接口寄存器
表e - 2 AT硬盘控制器寄存器端口及作用
端口
名称
读操作
写擁作
tbclftj
HD_DAFA
数据寄存器 -扇区数据賤写
、翳式化)
0x1 fl
HD ERROR
错误寄存器(错泯状态)
写前伏补偿需存器
0x1 £2
IID_NSECTOR
扇区数寄存器 “扇区敢(it.写“检验、格式化)
OxlD
HD_SECTOR
扇区号寄存器 ?起始扇区(i孰 写
0x114
HD^LCYL
柱面号寄存器 -杖面号低字* (读
、写、检验、格式化〕
0x1 e
HDJKYL
柱面号寄存器 -柱面号高字节(读
、写、检脸、格式化)
0x1 fc
HD_CXKRENT
塑幼戕磁头寄存器-驱动器引磁头号「
1 Oldlildili. dF驱动器号 r hmS头号)
flxlf;
HDSTATLTS
主状态寄存器(HD STATLS)
命令寄存器
Ox?伍
HD_CW
硬盘控制寄召器(HD CMD)
数字输入寄存器(与1.2M软盘合用)
—
下面对各端口寄存器进行详细说明。
?数据寄存器(HD_DATA OxIfO)
这是一对16位高速PIO数据传输器,用于扇区读、写和磁道格式化操作。 CPU通 过该数据寄存器向硬盘写入或从硬盘读出 1个扇区的数据,也即要使用命令rep outsw 或rep insw重复读/写cx=256字。
?错误寄存器(读)/写前预补偿寄存器(写)(HD_ERROR0x1f1)
在读时,该寄存器存放有8位的错误状态。但只有当主状态寄存器(HD_STATU,S)x1f7) 的位0=1时该寄存器中的数据才有效。执行控制器诊断命令时的含义与其它命令时的不
同。见下表所示
表6-3硬f
盘控制器错误寄存器
值
诊断命令时
其它命令吋
OxO 1
无错课
数据标志丢失
0x02
控常
?器出错
磁道0错
0x03
扇区缓冲区
错
0x04
ECC部件错
命令放弃
0x05
控帚
(J处理器
I
0x10
ID春找到
0x40
ECC错误
0x80
坏扇区
在写操作时,该寄存器即作为写前预补偿寄存器。它记录写预补偿起始柱面号。对 应于与硬盘基本参数表位移 0x05处的一个字,需除4后输出。
?扇区数寄存器(HD_NSECTOJR0x1f2)
该寄存器存放读、写、检验和格式化命令指定的扇区数。当用于多扇区操作时,每 完成1扇区的操作该寄存器就自动减1,直到为0。若初值为0,则表示传输最大扇区 数 256。
?扇区号寄存器(HD_SECTOR0x1f3)
该寄存器存放读、写、检验操作命令指定的扇区号。在多扇区操作时,保存的是起 始扇区号,而每完成1扇区的操作就自动增1。
?柱面号寄存器(HD_LCYL HD_HCYL 0x1f4, 0x1f5)
该两个柱面号寄存器分别存放有柱面号的低 8位和高2位。
?驱动器/磁头寄存器(HD_CURREN,T0x1f6)
该寄存器存放有读、写、检验、寻道和格式化命令指定的驱动器和磁头号。其位格式为101dhhhh。其中101表示采用ECC校验码和每扇区为512字节;d表示选择的驱
动器(0或1); hhhh表示选择的磁头。
?主状态寄存器(读)/命令寄存器(写)(HD_STATUS/HD_COMMAND0x1f7)
在读时,对应一个8位主状态寄存器。反映硬盘控制器在执行命令前后的操作状态 各位的含义见下表所示
表咅
4 位主状态寄存器
名称
屛蔽码
说明
0
ERR_SIAT
Ok-01
命令执行梢
状态冷存蛊
i生 专违位置位时说明前一个命令凶出帯结求.此时出错寄存器和 中的岀持位會有引起蛰農的一些佶息B
1
INIEX_£TAT
0x02
收到盧引.
F磁盘旋轴遇到窪引标志时会进宜该位’
ECC_STAT
OxtM
ECCS验新
这弼情况不
N I遐到一个可恢亘的裁据帮決而且匚得到纠正,就会设童该tL 会屮断一介爭扇区谨援作口
DRQ_£TAT
(MS
敌据请求战
何传输一个
务,U该们■枢讶忡时,表示駆功蒔已经汕無好在主忙和垃抑骑CIZ 字或一个字节的数盜。
麵动器-扌道
结F讶伸嵌丙佝时.表亦#遊KHT已经完戌?域久已鏡円衣州
4
SEEK STAT
0x10
疋的6^道:k
?当发生错谋时,该位并芋会改变.只有主机读取r状在番存器后,
该位就套再
次去示当前#道的完成状态*
5
WRERH STAT
应D
驰期器故障
「马出诸)”十发生错误时.该位并车会改先口只有主机读収『状态
崙存器后
该也就会再次表示 i怪侔的出锚状恵。
好(就绪儿农示驱动爲已经准备好接收命令口气屋生错遢时,该位
6
KEADY STAT
0x40
井不会改变
?只有主机读厢了状态寄齐器
文档评论(0)