[请教]对硬盘端口读写问题
我想写硬盘的驱动程序。按照《linux内核完全注释》上给的linux的代码,在我自己写的小os里加了个简单的测试程序,如下。
可是每次在刚开始对磁盘操作时,就出问题,就是每次对HD_STATUS(0x1f7)读取的都是 0x00,就是空闲了但不就绪。
不知道是不是在第一次对磁盘操作前要有别的初始化?还是有其他问题我没有注意到?
下面也附上了bochsrc.bxrc中对disk的描述。
多谢!
code:
static void hd_out(t_32 head, t_32 cyl, t_32 nsect, t_32 sect, t_32 cmd)
{
int retrys = 1000;
t_32 port;
while(--retrys && (in_byte(HD_STATUS) & 0xC0) != 0x40);
if(retrys == 0) {
disp_hex(in_byte(HD_STATUS));
return;
}
……
}
bocksrc.bxrc:
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="c.img", mode=flat, cylinders=162, heads=16, spt=63
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论