clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1697回复:12

求8位机读写ide硬盘程序或流程!

楼主#
更多 发布于:2003-10-20 11:13
光看ata协议只能读出idenfity,扇区读写还不会。谁给点资料啊。
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-21 08:19
没人回应!
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-21 14:52
再顶
resou
驱动牛犊
驱动牛犊
  • 注册日期2002-06-20
  • 最后登录2008-11-10
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-21 19:03
协议写的很清楚哦
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-22 09:21
协议太长,看晕了。问个问题,如果硬盘要用8位总线,是不是一定要有CFA特性?如果不是该怎么设?PIO模式read sectors后read buffer是不是一定要靠INT读?还有LBA命令怎么写,我按照协议写但是老是得到地址错误报告!
resou
驱动牛犊
驱动牛犊
  • 注册日期2002-06-20
  • 最后登录2008-11-10
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-11-05 21:20
读写硬盘的数据总线,对数据寄存器的访问是16位的,对其它寄存器的访问是8位的。

[编辑 -  11/5/03 by  resou]
resou
驱动牛犊
驱动牛犊
  • 注册日期2002-06-20
  • 最后登录2008-11-10
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-11-06 00:38
read sector后设备请求主机进行数据交换,主机可以直接以16位方式连续读256次data寄存器既可得到sector的数据,多扇区读就256乘以扇区数。LBA方式时首扇区地址是0扇
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-11-06 09:31
读写硬盘的数据总线,对数据寄存器的访问是16位的,对其它寄存器的访问是8位的。

[编辑 -  11/5/03 by  resou]

我的意思是用8位总线访问数据寄存器+其它寄存器。现在问题解决了一部分(原先的硬盘是坏的!),也可以用8位总线读取任何数据,问题在于硬盘一定要有CFA特性。所以还是想8转16来读写,苦于转换电路成本、复杂!
resou
驱动牛犊
驱动牛犊
  • 注册日期2002-06-20
  • 最后登录2008-11-10
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-11-06 21:51
不知道你是用什么mcu的,我是用51的,用P0 P2做为数据总线,P1做为控制总线,就不存在16位到8位的转换啊,而且还不影响P0 P2的其它用途
说说你的做法吧
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-11-07 08:51
用P0 P2做为数据总线??硬盘是D0-D15哦,你2根线怎么够?
我是使用D0-D7数据线,A0-A2地址线。
resou
驱动牛犊
驱动牛犊
  • 注册日期2002-06-20
  • 最后登录2008-11-10
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-11-07 23:33
51的IO是8位的哦,P0 P2就是16位了
resou
驱动牛犊
驱动牛犊
  • 注册日期2002-06-20
  • 最后登录2008-11-10
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-11-07 23:39
P0的0-7 跟P2的0-7 组成16位数据总线,P1的0-4 为地址总线,P1的56分别为RW控制线
读取控制寄存器只需要用到P0 P1,读数据寄存器要同时用到P0 P2 P1
P0 P2仍然可以用做外部存储器接口
读取硬盘跟读ROM/RAM使用不同的指令即可。
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-11-08 08:55
瞧,咱们都会错意了。我还以为你的IC的IO排列是P0--PXX,你说的是用IO口读写啊,当然可以拉,我打算最后不行才走这一步。现在我的方案是使用“总线”,指IC真正地址数据线,只有8位。这样做我可以随意扩展外围设备,而且速度比IO快很多(有DMA)。所以我才一直考虑8转16。
游客

返回顶部