阅读:632回复:0
段描述符?
在武安和的书里有个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()? |
|