wei_ziyong
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2010-04-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望16点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:632回复:0

段描述符?

楼主#
更多 发布于:2004-04-22 15:34
在武安和的书里有个PCI9054DMA传输的例子,有段获取段描述符的代码如下:
while (pXfer->SequenceTransferDescriptors(&ptd)) {
      // program the h/w using  ppTD
     t << \" Physical address 0x\" << ptd-_PhysAddr.LowPart
          << \". Length is 0x\" << ptd->td_Length << \".\"
              << EOL;
}

if ((ULONG) pXfer->BytesRemaining() == I.ReadSize())
      StartDMA(ptd->td_PhysAddr.LowPart,ptd->td_Length);
}

他在设备描述结构中设置dd.ScatterGather=FALSE;不支持分散聚集传输,也就是说在整个DMA缓冲区只有一个段描述,他为什么要用个WHILE循环来调用SequenceTransferDescriptors())反复的获取段描述符。
能不能调用SequenceTransferDescriptors())函数一次就把地址和长度
传给StartDMA()?
游客

返回顶部