中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-16 18:09
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » sata硬盘接口的问题! 查看 3,131 回复 6
楼 主 sata硬盘接口的问题! 发表于 2006-09-29 23:40 ·  中国 山东 济南 联通
高级用户
★★
积分 506
发帖 187
注册 2005-12-04 22:41
UID 46500
性别 男
状态 离线
现在的硬盘很多都是sata,原来是ide。
对硬盘读写可通过int13.
现在使用int13对sata和ide硬盘都可以进行读写。这个测试完毕。
但是使用io对硬盘进行读写时。用ide没问题,可以使用1f0进行端口的读写。
可是在使用sata时,就不能写成功。
所以我认为是参数不正确,那位朋友知道的可以指点一下。谢谢。
2 发表于 2006-09-30 03:15 ·  中国 山东 济南 联通
高级用户
★★
积分 506
发帖 187
注册 2005-12-04 22:41
UID 46500
性别 男
状态 离线
目前只是解决了把sata硬盘认作是第1硬盘的可以解决了。
3 急,在dos7.1里如何读取硬盘序列号?在线等待 发表于 2007-03-01 04:15 ·  中国 广东 深圳 电信
新手上路
积分 6
发帖 2
注册 2007-01-24 01:34
UID 77469
性别 男
状态 离线
急,在dos7.1里如何读取硬盘序列号?在线等待
4 发表于 2008-07-01 18:15 ·  中国 福建 厦门 电信
高级用户
★★★
积分 741
发帖 366
注册 2007-07-25 19:11
UID 94024
性别 男
状态 离线
SATA IDE模式仍然映射1F0/170口,这个问题不大。对于SATA AHCI模式你可能需要从PCICFG取得分配到的I/O口基址,然后向取得的I/O口发ATA命令看上面是否挂有硬盘。

[ Last edited by netwinxp on 2008-7-1 at 06:44 PM ]
5 发表于 2008-08-22 16:11 ·  中国 上海 广电网
新手上路
积分 7
发帖 5
注册 2008-01-14 10:02
UID 108545
性别 男
状态 离线
Originally posted by netwinxp at 2008-7-1 06:15 PM:
SATA IDE模式仍然映射1F0/170口,这个问题不大。对于SATA AHCI模式你可能需要从PCICFG取得分配到的I/O口基址,然后向取得的I/O口发ATA命令看上面是否挂有硬 ...

同意此种说法,但是AHCI只是intel公司的一个协议,如果主板支持AHCI的话,可以通过AHCI来访问sata硬盘,具体的端口访问以及fis表及command表的设置需要参考AHCI spec,如果是其它公司的就要看相应spec了
6 发表于 2008-09-28 13:46 ·  中国 福建 厦门 电信
高级用户
★★★
积分 741
发帖 366
注册 2007-07-25 19:11
UID 94024
性别 男
状态 离线
Originally posted by libeili at 2008-8-22 16:11:
同意此种说法,但是AHCI只是intel公司的一个协议,如果主板支持AHCI的话,可以通过AHCI来访问sata硬盘,具体的端口访问以及fis表及command表的设置需要参考AHCI spec,如果是其它公司的就要看相应spec了


硬盘控制器只不过是用来向硬盘发送ATA命令的芯片,一般的ATA读写命令兼容所有的EIDE、PATA、SATA硬盘控制器和硬盘,仅仅用PIO读写而不使用的NCQ的话就不需要用SATA专用的ATA命令。通过PIO模式读写硬盘主要要解决两个问题:
1、IO口基址,不同的Port或Channel对应的口不同。
2、设备选择,大多数PATA、EIDE每个Channel对应两个设备(也有单通道的,只支持一个设备),所以要在ATA包填写DEV段的内容。
7 sata 硬盘 在AHCI 模式下如何读取硬盘 发表于 2009-02-09 10:34 ·  中国 上海 电信
新手上路
积分 2
发帖 1
注册 2009-02-04 12:21
UID 137999
性别 女
状态 离线
我现在已经可把Ahci base address读取出来了,可是下面应该如何操作ATA命令呢,可以用WINIO的读取内存函数操作吗,还有在AHCI spec中的port control register中没有找到data寄存器阿,如何读书据呢,望高手赐教。非常感谢
论坛跳转: