yihang00
驱动牛犊
驱动牛犊
  • 注册日期2008-06-06
  • 最后登录2008-08-11
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1269回复:1

DMA 传输

楼主#
更多 发布于:2008-06-07 13:18
OnDmaReady中主要代码:
PTRANSFER_DESCRIPTOR ptd;

while (pXfer->SequenceTransferDescriptors(&ptd))
{        
                       t << " Physical address 0x" << ptd->td_PhysAddr.LowPart << ". Length is 0x"
            << ptd->td_Length << "." << EOL;
}
if ((ULONG) pXfer->BytesRemaining() == TSize)
    StartDMA(ptd->td_PhysAddr.LowPart,ptd->td_Length);
    m_CurrentTransfer=new(NonPagedPool)KDmaTransfer(this,&m_Dma);
    if(m_CurrentTransfer==NULL)
    {
        status=STATUS_INSUFFICIENT_RESOURCES;
        t<<"unable to allocate transfer object:"<<status<<EOL;
        I.Information()=0;
        I.Status()=status;
        PnpNextIrp(I);
    }
Serial_PCI9054_IOCTL_800_DMARead_Handler主要代码:
    status=m_CurrentTransfer->Initiate(this,&m_Dma,I.Mdl(),
                                        FromDeviceToMemory,
                                        LinkTo(OnDmaReady),&m_Buffer
                                       );
现在的问题是:用signaltp检测到局部总线上数据正常,等到应用程序收到数据后不正常。
50462976
117835012
185207048
118361356
319951120
521540884
454695192
387849500
589439264
791029028
724183336
657337644
858927408
收到的数据如上,尽是些这东西,而本来想要传输的数据是1,2,3,4,.........
这是什么情况?还请高手解答,本人QQ:6796682,做图像采集卡,交流一下
tqijin
驱动小牛
驱动小牛
  • 注册日期2006-07-04
  • 最后登录2013-11-21
  • 粉丝3
  • 关注0
  • 积分31分
  • 威望1060点
  • 贡献值1点
  • 好评度14点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-07-28 18:26
检查一下接收时的数据类型
你的这个好像时乱码
游客

返回顶部