niggasmokey
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1092回复:2

问个关于isr的问题。9054相关

楼主#
更多 发布于:2004-12-28 21:38
按照武安和书中的示例,dma传输完成后产生一个中断,然后去调用isr->dpc->dmaReady回掉函数->完成irp.
这样做的中断延时异常之大。请问有没有不用isr,dpc的方法。比如说在dmaReady回掉函数那里等待DMACSR0的channel0 done那个标志位。等到done为1后,结束irp.
可我实践了一下好象有问题。我要消除哪个中断延时。请高人指点迷津。
ddong
驱动牛犊
驱动牛犊
  • 注册日期2002-11-23
  • 最后登录2012-02-24
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望11点
  • 贡献值1点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-30 13:31
9054不是全部传输完成后给一个中断,而是每传完一个SGL register后给一个中断。
niggasmokey
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-30 15:13
什么是SGL register?能不能不用中断方式结束传输?因为我看到9054手册5-15页,有这么段话:
the channel done bit(s) can be polled,instead of interrupt generation,to indicate the DMA transfer status.
是不是可以仅仅判断这一位就可以结束传输了?如何在DS的驱动里头改动?可否去掉isr和dpc,在DMAready回调函数那里开始,到startDMA函数,然后就再回到DMAready,并结束。
麻烦指点一下
游客

返回顶部