阅读:2203回复:15
DMA?什么东西?我真的不懂!!
:D :D写PCI的驱动程序,需要用到DMA的传输方式。我却不知道怎么办了。看了一点资料,有一些似是而非的概念。我都不知道对不对,兄弟们帮忙看看,对不对。
我感觉好像对于PCI设备来说,作DMA基本就是有两种情况。 如果PCI卡本身就可以作为DMA主控,那么在DMA操作的时候,只需要向PCI控制寄存器里面写一些参数,然后就可以启动DMA了。这样的操作不占用主板上的DMA控制器。 如果PCI卡本身是slave。那么就必须使用主板上的DMA通道了。 1,我这些理解是否有错误?请点拨。 2,我用的9054的片子。好像本身可以作为PCI的主控。但是我只想把它作为PCI总线的slave来处理。那么是不是我只能调用系统的DMA通道了? 3,如果用系统的DMA通道的话,那么我在什么地方得到系统的DMA资源?在StartDevice里面吗?IO管理器怎么知道我的板子需要使用DMA通道?难道是在PCI状态的寄存器里面可以设定吗? 哈哈。。。。乱七八糟一堆问题。兄弟们不要嫌分少啊。 :D :D |
|
最新喜欢:znsoft
|
沙发#
发布于:2002-07-01 14:27
:D :D写PCI的驱动程序,需要用到DMA的传输方式。我却不知道怎么办了。看了一点资料,有一些似是而非的概念。我都不知道对不对,兄弟们帮忙看看,对不对。 1 正确,如果你的卡上有dma控制器,当然可以不用主板上提供的dma通道 2 可以吧 3 资源是在startdevice中得到,需要申请dma适配器对象,用IoGetDmaAdapter |
|
|
板凳#
发布于:2002-07-01 14:29
1、对。
2、是。有9054,你可以不用它。 3、有一些函数,用来使用DMA的。一般在在你的StartIO里面,申请系统的DMA资源。如果一次不够,在DMA完了(中断)时,再设置DMA,再来一次。 |
|
地板#
发布于:2002-07-01 15:25
请教wd怎么玩? :D
|
|
|
地下室#
发布于:2002-07-01 15:42
:D :D两大高手都出手了。哈哈。。。。我有救了!
既然系统DMA通道是通过IoGetDmaAdapter来申请,那么在StartDevice里面获得资源的方式是不是和其他资源类型有着很大的不同了? 其他资源类型,如mem,io等,都是在总线驱动程序读取PCI状态寄存器以后,了解到设备需要某些资源,然后再在StartDevice里面通过Irp里面的参数传递进来通知我们的驱动程序具体分配了什么资源。 而DMA资源则需要在StartDevice里面申请并获得。 对不对啊? |
|
|
5楼#
发布于:2002-07-01 16:37
关于dma操作,主控和从属的有很多地方不太一样
具体的还是要看书, walter oney那本书的第七章最后一节 仔细研究一下,会有收获的。 |
|
|
6楼#
发布于:2002-07-02 14:18
刻苦钻研中。。。。。ZZZzzzz............. :D :D :D
|
|
|
7楼#
发布于:2002-07-02 16:31
几位高手可不可以帮我做一做Modem卡for XP的驱动啊?
|
|
|
8楼#
发布于:2002-07-02 16:56
我可不是高手
不过怎么帮你呀 |
|
|
9楼#
发布于:2002-07-03 15:05
我把inf文件放上来,高手们帮我看看怎么改?
我的inf文件在附件中 |
|
|
10楼#
发布于:2002-07-03 15:40
你的是VxD的驱动?
光改INF是没有用的,VxD在XP下就不用了。 |
|
11楼#
发布于:2002-07-03 20:50
:D :D是啊,是啊,赫赫。。。。arthurtu说的很对阿,呵呵。。。。。(其实我不懂VxD,瞎凑合。)
:D :D :D :D |
|
|
12楼#
发布于:2002-07-04 09:33
:D :D是啊,是啊,赫赫。。。。arthurtu说的很对阿,呵呵。。。。。(其实我不懂VxD,瞎凑合。) faint :D |
|
13楼#
发布于:2002-07-04 11:35
那要怎么改?XP下是用sys吗?
|
|
|
14楼#
发布于:2002-07-04 12:00
是吧
|
|
15楼#
发布于:2002-07-05 15:45
回答得这么简洁?能不能详细点?
|
|
|