klaudy
驱动牛犊
驱动牛犊
  • 注册日期2006-01-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望77点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:1710回复:1

plx dma问题

楼主#
更多 发布于:2009-08-19 10:52
现dma传输8位可行,但16位传输有问题。偶数地址能正常传送,奇数地址始终失效
    DmaDesc1.EnableReadyInput    = 1;
    DmaDesc1.DmaStopTransferMode = AssertBLAST;
    DmaDesc1.DmaChannelPriority  = Rotational;
    DmaDesc1.IopBusWidth         = 2;            // 16-bit bus
    rc1=PlxDmaSglChannelOpen(hDevice,PrimaryPciChannel0,&DmaDesc1);
    if (rc1 != ApiSuccess)
    {        // ERROR – Unable to open DMA channel
        PlxPrintf("\nOPEN ERR");
    }
    DmaData1.u.UserVa             = (U32)PciBuffer1;
    DmaData1.LocalAddr           = 0x0;
    DmaData1.TransferCount       = sizeof(PciBuffer1);
    DmaData1.LocalToPciDma       = 0;
PlxDmaSglTransfer(hDevice,PrimaryPciChannel0,&DmaData1,FALSE);
想请教大侠,除了设置DmaDesc1.IopBusWidth         = 2;      以外,还有什么需注意的?
zlf1110
驱动牛犊
驱动牛犊
  • 注册日期2002-11-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分39分
  • 威望365点
  • 贡献值0点
  • 好评度30点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-08-20 17:53
DMA传输与内存边界有关,需要仔细检查一下。地址最低两位应该为00才对吧。
zlf1110
游客

返回顶部