vaccy
驱动牛犊
驱动牛犊
  • 注册日期2005-12-01
  • 最后登录2009-12-09
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望211点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1885回复:2

请教dma。

楼主#
更多 发布于:2009-12-04 14:48
DMA微软给的例程是外部有数据,使用writedispatch,先dma写数据(allocatechannel->ma
ptransfer)
然后中断接着处理。
现在我的需求是外部有数据,我在writedispatch里面打开中断,等有中断之后才能使用DMA
传输数据,这个时候该如何处理DMA呢。
hustsolo
驱动牛犊
驱动牛犊
  • 注册日期2009-06-02
  • 最后登录2012-12-04
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望181点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-12-06 12:18
应该是可以,
中断到来时,你配置dma就可以,而不是在dispatchwrite里面。比如,你写个startdma()函数,把那些配置dma的工作(如maptransfer)都放在里面。这样,中断一来,你就调用startdma(),然后在Dpc里面把这个write IRP完成掉。
vaccy
驱动牛犊
驱动牛犊
  • 注册日期2005-12-01
  • 最后登录2009-12-09
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望211点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-12-08 11:29
貌似不能的吧,
运行级别不一样的吧。
配置dma的代码放在isr里面调用肯定蓝屏了。
游客

返回顶部