阅读:1129回复:2
写9054DMA驱动,用DS,BytesRemaining()该怎么用
用DMA写数据:
if ((ULONG) pXfer->BytesRemaining() == I.WriteSize()) { StartDMA(ptd->td_PhysAddr.LowPart,ptd->td_Length); } 运行时会出现:break due to page fault(0eh) fault=0000 如果把判断条件改为 if ((ULONG) pXfer->BytesRemaining() == number) number 为具体的一个数值,就不出错,这是怎么回事? |
|
沙发#
发布于:2003-11-07 11:06
当然会出错了,你第一种情况调用的WriteSize()函数返回的是一个status,而你的条件语句判断的是字节数,当然会出错。
|
|
|
板凳#
发布于:2003-11-07 11:24
我觉得I.WriteSize()返回的是一个数值,因为我用
t << \"I.WriteSize()= \" << I.WriteSize() <<EOL; 可以看到. 并且还有一个问题,把上面的判断注释掉,做完DMA后看到 BytesRemaining() 仍然对于传输前的值,没有变为0. |
|