[请教]对硬盘端口读写问题

发布于 2022-09-24 01:59:42 字数 796 浏览 11 评论 0

我想写硬盘的驱动程序。按照《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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文