zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2086回复:7

LINUX下9054的DMA操作!(多多请教!)

楼主#
更多 发布于:2003-06-25 09:24
我在试着调试DMA,就是通过PCI9054的接口从板卡上的SRAM空间DMA数据到内核空间,可是调试的时候出现了奇怪的事情,就是只要一运行测试程序,就会死机,我看了一下,是死在了等待DMAISDONE信号那里了,可是我注销那个等待循环的时候,看到用户空间已经传过来部分数据了,就是一部分是正确的,可是,为什么没有DMA完成信号呢?

请高手指点一下啊!
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-25 11:52
这个情况说明DMA已经启动却没有完成。还有就是你说传过来的数据部分是正确的,怎么个部分正确?是前面的正确,还是间隔型的正确.
有了驱动,人才有了力量。
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-25 15:13
fwzfwz1:
 历经无数次死机,今天上午终于调通了,一开始的确是DMA启动但是没有接收到完成信号,我在启动之前先清除了DMA产生的中断,就可以了!
 现在一次可以传16K的数据,我先是测了传1K的时间,使用do_gettimeofday()得到1的差值,这个1是指1微秒吗,还是100微秒啊!关于时间我一直不清楚!

多谢!
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-26 15:05
原来一次测出来的速度那么不准确,现在已经测试成功了,大约是是80M字节每秒。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-26 15:27
我今天借了一个串行ROM安装在我的9054 RDK 板上,我的DMA驱动也已经通过了,只不过DMA传输完毕后未产生中断,不知为何,你的驱动产生中断了吗?还有你所说得测速是如何实现的,我从来未测过速度,不知如何实现。
有了驱动,人才有了力量。
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-26 19:02
我也是刚开始写中断,你的没有发生中断,你是指DMA通道0完成后的中断吧,首先你是不是已经使能了DMA中断?

测试速度很简单,就是多次循环传送,看最终间隔时间,可WIN下思路相同
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-26 23:20
我是使能了中断,但是还是没有中断发生;关于测试速度你讲仔细点,因为对此我一点概念都没有。
有了驱动,人才有了力量。
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-27 10:58
就是使用do_gettimeofday() 在DMA前后取当前时间,然后相减即为时间间隔,除去数据量即得速度。

你搜索一下相关帖子吧,很多的!
游客

返回顶部