duren12345
驱动牛犊
驱动牛犊
  • 注册日期2005-02-21
  • 最后登录2005-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1182回复:8

请问在DOS下怎么IDE接口实现光驱或硬盘的DMA传输??急

楼主#
更多 发布于:2005-02-28 09:25
请问在DOS下怎么IDE接口实现光驱或硬盘的DMA传输,那位大侠知道,请告知,谢谢!!!
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-28 09:34
用INT 13h调用
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
duren12345
驱动牛犊
驱动牛犊
  • 注册日期2005-02-21
  • 最后登录2005-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-28 10:06
老大,能不能写的详细一些,刚开始做这方面的我写了一段代码,是用C语言写的,首先我将光驱启动,然后配置8237的寄存器,我就将配置寄存器的代码贴出来,您帮我看看对不对,我是要对光驱的DMA,刚才我看了您的答复查了一下书,好像对硬盘的读取和对光驱的读出差别很大


#define Command_register                 0x10
#define Request_Register                 0x12
#define Single_Mask                      0x14
#define Mode_Register                    0x16
#define Clear               0x18
#define Master_Clear_reset               0x1a
#define Temporary_Register               0x1a
#define Clear_Mask_Register              0x1c
#define All_Mask_Register                0x1e

下面是初始化8237的代码
outportb(port_Master_Clear_reset,0);
outportb(port_Mode_Register,mode);
outportb(port_Request_Register,4+channel_sel);
outportb(dma_page_port,page_num);
outportb(dma_addr_port,low_addr);
outportb(dma_addr_port,high_addr);
outportb(dma_count_port,0x30);
outportb(dma_count_port,9);
outportb(port_Single_Mask,channel_sel);
outportb(port_All_Mask_Register,0);
谢谢!!!!


[编辑 -  2/28/05 by  duren12345]
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-28 12:07
老大,能不能写的详细一些,刚开始做这方面的我写了一段代码,是用C语言写的,首先我将光驱启动,然后配置8237的寄存器,我就将配置寄存器的代码贴出来,您帮我看看对不对,我是要对光驱的DMA,刚才我看了您的答复查了一下书,好像对硬盘的读取和对光驱的读出差别很大


#define Command_register                 0x10
#define Request_Register                 0x12
#define Single_Mask                      0x14
#define Mode_Register                    0x16
#define Clear               0x18
#define Master_Clear_reset               0x1a
#define Temporary_Register               0x1a
#define Clear_Mask_Register              0x1c
#define All_Mask_Register                0x1e

下面是初始化8237的代码
outportb(port_Master_Clear_reset,0);
outportb(port_Mode_Register,mode);
outportb(port_Request_Register,4+channel_sel);
outportb(dma_page_port,page_num);
outportb(dma_addr_port,low_addr);
outportb(dma_addr_port,high_addr);
outportb(dma_count_port,0x30);
outportb(dma_count_port,9);
outportb(port_Single_Mask,channel_sel);
outportb(port_All_Mask_Register,0);
谢谢!!!!


[编辑 -  2/28/05 by  duren12345]

对硬盘的读取和对光驱的读出差别很大,这是肯定的。但要对端口操作,资料太少,困难很大。我也只对一些特定应用知道,要写个完全的,太困难。DOS下难啊!
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
duren12345
驱动牛犊
驱动牛犊
  • 注册日期2005-02-21
  • 最后登录2005-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-28 13:07
那您那里有没有现成的例子,就像您说的一些特殊的应用,应该也是PC上的例子吧,能否发个给我看一下,我真的很急,老板催着我,而我现在一筹莫展,谢谢!!,另外我想请教一下,光驱用的是IDE接口,在用DRIVERWORKS建立工程的时候,没有IDE那个选项,请问应该选那个,就可以选择PCI,USB,ISA,那个地方。

[编辑 -  2/28/05 by  duren12345]
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-28 15:27
那您那里有没有现成的例子,就像您说的一些特殊的应用,应该也是PC上的例子吧,能否发个给我看一下,我真的很急,老板催着我,而我现在一筹莫展,谢谢!!,另外我想请教一下,光驱用的是IDE接口,在用DRIVERWORKS建立工程的时候,没有IDE那个选项,请问应该选那个,就可以选择PCI,USB,ISA,那个地方。

[编辑 -  2/28/05 by  duren12345]

我的估计对你没用,是操作端口读硬盘系列号的,根本跟光驱无关
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
duren12345
驱动牛犊
驱动牛犊
  • 注册日期2005-02-21
  • 最后登录2005-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-02-28 16:33
您发给我看一下吧,可能会对我有帮助的,应为我现在不知道我DMA端口对不对,另外我不知道我的初始化顺序和方法对不对,可以吗?
可以的话你发到我信箱也可以konglong2002cn@yahoo.com.cn
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-02-28 17:03
您发给我看一下吧,可能会对我有帮助的,应为我现在不知道我DMA端口对不对,另外我不知道我的初始化顺序和方法对不对,可以吗?
可以的话你发到我信箱也可以konglong2002cn@yahoo.com.cn

已发
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
duren12345
驱动牛犊
驱动牛犊
  • 注册日期2005-02-21
  • 最后登录2005-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-02-28 17:25
谢谢!!
游客

返回顶部