francisxu
驱动牛犊
驱动牛犊
  • 注册日期2010-03-16
  • 最后登录2010-05-17
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2026回复:1

PCI9656驱动DMA传输问题

楼主#
更多 发布于:2010-03-16 21:04
PCI9656驱动DMA传输问题
PCI9656驱动DMA传输问题无法接收中断,问题描述大概如下:
使用PLXMon或者DriverWizard工具可以查询到PCI9656板卡的存在,读取BAR0空间中的偏移量分别对应相关的寄存器,如:
MDAMODE0(0x80),DMASIZ0(0x8c),CSR0(0xa8)等等,当使用PLXDMAsgltransfer()函数后,检查DMAMODE0(0x80)为0x20e43,DMASIZ0(0x8C)为0,CSR0(0XA8)为0x01,即DMA未结束,同时读取DMADPR0(0x90)为0x160a011,INTCSR(0x68):0xf050180,也无中断发生(INTA#),即导致后面使用的PLXNotificationWait()函数返回值为ApiWaitTimeOut,未等到中断而结束。
希望各位支招
francisxu
驱动牛犊
驱动牛犊
  • 注册日期2010-03-16
  • 最后登录2010-05-17
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-03-18 22:49
在调试中我用寄存器进行操作
1,DMA方式设置  0x80: 0x20e43
2,PCI地址设置   0x84:PCI物理地址
3,Local地址设置  0x88:Local端地址
4,设置传输计数寄存器 0x8c:0x1000
5,设置描述寄存器 0x90:0x0a
6,设置命令  启动或停止 0xa8

在设置完成之后,读取这几个寄存器的值是和写进去的一致,
但是问题是内存区中没有数据进来,仍然是原来分配生成时候的原始值。
就是DMA没有传输或者说没有开始,读取CSR0(0xA8)仍然是0x01而不是0x11,
即DMA没有完成,而INTA中断也没有发生,不知道还有什么需要注意的地方,
请大家讨论一下,不吝指教
谢谢
游客

返回顶部