5734|17

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

驱动开发启动DMA的问题 [复制链接]

停滞一周了,希望各位大侠帮忙解决,具体问题如下:
    做PCI驱动,普通方式的读写我已经实现了,现在想通过DMA对设备进行读写。在网上看到的例子都是设备自带DMA控制器,然后在EvtProgramDma例程中编程设备的DMA控制器。但我们的设备没有DMA控制器,Boss的意思是使用主板的DMA控制器。不知道这个方案是否可行,如何实现。望各位给个解决方案或者资料什么的。
    感激不尽!!在网上找了一周了完全看不到这方面的资料。

最新回复

最近也在研究kmdf的东西,楼主说的东西我明白,是想用PC主板上的DMA控制器来实现数据拷贝的工作。 这里有一个问题,KMDF在WDK的文档里面明确说明,不支持ISA老式的DMA传输,即设备没有DMA控制器,需要用PC主板控制器的情况。这个时候,可能需要用WDM的驱动框架,或者更老的NT式驱动了。因为现在的PC主机上的DMA控制器是通过PCI-ISA桥挂载的ISA设备。同时我也在找可以访问并且使用这个设备的方法,我想实现一个Memory->Memory的Test程序 lz提到黑屏重启,我没有遇到过,蓝屏重启倒是有,那是因为代码错误,产生了页错误,这个方面的内容在很多windows驱动相关的书上都可以找到。 应该是lz在EvtIoWrite、EvtIoRead中调用了在>=DISPATCH_LEVEL中才能调用的函数。直接或者间接的  详情 回复 发表于 2009-10-29 22:43
点赞 关注

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
自己顶起期待高手解答……
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
为什么没人理我?
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

4
 
好好看看板子的资料吧,如果boss叫你用板子上的dma,应该是用你们mcu自带的dma控制器吧,这个看看寄存器配置去了解下mcu内部dma是怎么用的。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
终于看到有人回复了,感谢大哥帮忙
不过boss的意思是使用电脑自带的DMA控制器,因为我们的设备本身是没有的,现在很怀疑这个思路是否可行,因为网上完全找不到相关的资料。
另外确定了我们设备上其实是有个DMA控制器的,不过芯片资料说只能从PCI Memory读到芯片的FIFO。我现在想先用它来熟悉下DMA的操作,但新的问题是调用WdfDmaTransactionInitlizationUsingRequest系统就重启,不知道怎么找原因……
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
你是有操作系统的设备,当然只能通过映射读到内存io地址,你说的dma就是你cpu自带的吧,你cpu的datasheet上难道没有介绍寄存器的使用方法吗。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

7
 
搂住说清楚你用DMA来做什么?

说得不清不楚,别人怎么回复你啊?
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
lz的意思是做了pcI接口的设备,但是设备没有DMA功能,所以用PC的DMA,PC=>DMA=>pCI=>设备?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

9
 
原来是我不会说话了。楼上的理解就是我的问题了。

问题一:开始时认为我们的设备没有DMA控制器,boss的意思是PC主板上就有DMA控制器,要我使用PC主板上的DMA控制器实现对我们的设备的DMA方式的读写操作(不知这次可否说明白了,简单说:使用PC主板的DMA控制器读写PCI设备)。请问各位大哥:该方案是否可行,可行的话请给出实现实例或者资料,不可行请给出理由我也好跟老板有个交代。

问题二:最新发现我们的设备上包含一个DMA控制器。但是它只可以从PCI Memory读到芯片的FIFO(Data Sheet上是这么说的,我还不明白PCI Memory指的到底是哪块内存)。现在我在EvtDeviceAdd例程中创建WdfDmaEnabler和WdfDmaTransaction对象,然后在EvtIoWrite例程中初始化WdfDmaTransaction。可是每次一运行系统就直接黑屏重启了。如果在初始化Transaction时从写改为读即初始化出错,则系统正常运行。请大家指点下这个到底是什么地方出错了。

问题三:今天打算向文件中输出一些调试信息,写了一个函数:打开文件,写信息,关闭文件。这个函数在DriverEntry、EvtDeviceAdd、EvtDevicePrepareHardware、EvtDeviceReleaseHardware例程中能够正常运行,但是在其他例程中就会造成系统黑屏重启。请问各位高手这又是何原因。

小弟驱动新手,希望各位不吝赐教,小弟感激不尽。只要大家说话,分不成问题!!
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

10
 
自己顶起,等待高手。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

11
 
帮顶 期待高手赐教!
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

12
 
guanzhu
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

13
 
玩了一个周末,重新顶起
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

14
 
还是请高手吧,
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

15
 
没人可以帮忙么?
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

16
 
怎么没有人理我了呢?谁来帮帮我啊。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

17
 
看到自己的帖子沉了,为什么没人理我了呢。
是哪里做错了么?
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

18
 
最近也在研究kmdf的东西,楼主说的东西我明白,是想用PC主板上的DMA控制器来实现数据拷贝的工作。
这里有一个问题,KMDF在WDK的文档里面明确说明,不支持ISA老式的DMA传输,即设备没有DMA控制器,需要用PC主板控制器的情况。这个时候,可能需要用WDM的驱动框架,或者更老的NT式驱动了。因为现在的PC主机上的DMA控制器是通过PCI-ISA桥挂载的ISA设备。同时我也在找可以访问并且使用这个设备的方法,我想实现一个Memory->Memory的Test程序

lz提到黑屏重启,我没有遇到过,蓝屏重启倒是有,那是因为代码错误,产生了页错误,这个方面的内容在很多windows驱动相关的书上都可以找到。
应该是lz在EvtIoWrite、EvtIoRead中调用了在>=DISPATCH_LEVEL中才能调用的函数。直接或者间接的
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表