阅读:1182回复:8
请问在DOS下怎么IDE接口实现光驱或硬盘的DMA传输??急
请问在DOS下怎么IDE接口实现光驱或硬盘的DMA传输,那位大侠知道,请告知,谢谢!!!
|
|
沙发#
发布于:2005-02-28 09:34
用INT 13h调用
|
|
|
板凳#
发布于: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] |
|
地板#
发布于:2005-02-28 12:07
老大,能不能写的详细一些,刚开始做这方面的我写了一段代码,是用C语言写的,首先我将光驱启动,然后配置8237的寄存器,我就将配置寄存器的代码贴出来,您帮我看看对不对,我是要对光驱的DMA,刚才我看了您的答复查了一下书,好像对硬盘的读取和对光驱的读出差别很大 对硬盘的读取和对光驱的读出差别很大,这是肯定的。但要对端口操作,资料太少,困难很大。我也只对一些特定应用知道,要写个完全的,太困难。DOS下难啊! |
|
|
地下室#
发布于:2005-02-28 13:07
那您那里有没有现成的例子,就像您说的一些特殊的应用,应该也是PC上的例子吧,能否发个给我看一下,我真的很急,老板催着我,而我现在一筹莫展,谢谢!!,另外我想请教一下,光驱用的是IDE接口,在用DRIVERWORKS建立工程的时候,没有IDE那个选项,请问应该选那个,就可以选择PCI,USB,ISA,那个地方。
[编辑 - 2/28/05 by duren12345] |
|
5楼#
发布于:2005-02-28 15:27
那您那里有没有现成的例子,就像您说的一些特殊的应用,应该也是PC上的例子吧,能否发个给我看一下,我真的很急,老板催着我,而我现在一筹莫展,谢谢!!,另外我想请教一下,光驱用的是IDE接口,在用DRIVERWORKS建立工程的时候,没有IDE那个选项,请问应该选那个,就可以选择PCI,USB,ISA,那个地方。 我的估计对你没用,是操作端口读硬盘系列号的,根本跟光驱无关 |
|
|
6楼#
发布于:2005-02-28 16:33
您发给我看一下吧,可能会对我有帮助的,应为我现在不知道我DMA端口对不对,另外我不知道我的初始化顺序和方法对不对,可以吗?
可以的话你发到我信箱也可以konglong2002cn@yahoo.com.cn |
|
7楼#
发布于:2005-02-28 17:03
您发给我看一下吧,可能会对我有帮助的,应为我现在不知道我DMA端口对不对,另外我不知道我的初始化顺序和方法对不对,可以吗? 已发 |
|
|
8楼#
发布于:2005-02-28 17:25
谢谢!!
|
|