阅读:2086回复:7
LINUX下9054的DMA操作!(多多请教!)
我在试着调试DMA,就是通过PCI9054的接口从板卡上的SRAM空间DMA数据到内核空间,可是调试的时候出现了奇怪的事情,就是只要一运行测试程序,就会死机,我看了一下,是死在了等待DMAISDONE信号那里了,可是我注销那个等待循环的时候,看到用户空间已经传过来部分数据了,就是一部分是正确的,可是,为什么没有DMA完成信号呢?
请高手指点一下啊! |
|
沙发#
发布于:2003-06-25 11:52
这个情况说明DMA已经启动却没有完成。还有就是你说传过来的数据部分是正确的,怎么个部分正确?是前面的正确,还是间隔型的正确.
|
|
|
板凳#
发布于:2003-06-25 15:13
fwzfwz1:
历经无数次死机,今天上午终于调通了,一开始的确是DMA启动但是没有接收到完成信号,我在启动之前先清除了DMA产生的中断,就可以了! 现在一次可以传16K的数据,我先是测了传1K的时间,使用do_gettimeofday()得到1的差值,这个1是指1微秒吗,还是100微秒啊!关于时间我一直不清楚! 多谢! |
|
地板#
发布于:2003-06-26 15:05
原来一次测出来的速度那么不准确,现在已经测试成功了,大约是是80M字节每秒。
|
|
地下室#
发布于:2003-06-26 15:27
我今天借了一个串行ROM安装在我的9054 RDK 板上,我的DMA驱动也已经通过了,只不过DMA传输完毕后未产生中断,不知为何,你的驱动产生中断了吗?还有你所说得测速是如何实现的,我从来未测过速度,不知如何实现。
|
|
|
5楼#
发布于:2003-06-26 19:02
我也是刚开始写中断,你的没有发生中断,你是指DMA通道0完成后的中断吧,首先你是不是已经使能了DMA中断?
测试速度很简单,就是多次循环传送,看最终间隔时间,可WIN下思路相同 |
|
6楼#
发布于:2003-06-26 23:20
我是使能了中断,但是还是没有中断发生;关于测试速度你讲仔细点,因为对此我一点概念都没有。
|
|
|
7楼#
发布于:2003-06-27 10:58
就是使用do_gettimeofday() 在DMA前后取当前时间,然后相减即为时间间隔,除去数据量即得速度。
你搜索一下相关帖子吧,很多的! |
|