recorner
驱动牛犊
驱动牛犊
  • 注册日期2012-10-17
  • 最后登录2013-01-04
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1879回复:0

DriverStudio中关于DMA的类-PCIe驱动开发

楼主#
更多 发布于:2012-11-28 18:54
最近用DS写PCIe的驱动,用到DMA控制传输,不支持Scatter/Gather的情况下,关于DMA的三个类KDmaAdapter,KDmaTransfer和KCommonBuffer应该怎么用呢?
 
1.初始化KDmaAdapter时设置了DMA单个传输的最大长度为1M:
DEVICE_DESCRIPTION dd;
dd.MaximumLength = MAX_DMA_LENGTH; // 1M
 
再为KDmaTransfer非配分页内存
m_DmaTransfer = new(NonPagedPool) KDmaTransfer(this, &m_Dma);
这是只是分配了一个非分页内存也就是4KB大小是么?因为我只能读写的4KB的数据,我不知道为什么。。。为什么DMA可传输数据量不是KDmaAdapter里设置的DMA单个传输的最大长度为1M呢?怎样才能写入大于4KB的数据呢?
 
2.不支持Scatter/Gather的话,需不需要用到KCommonBuffer呢?在什么情况下用KCommonBuffer呢?
 
3.怎样连续多次DMA传输呢?
 
驱动菜鸟,希望得到各位大侠指点!!!
 
 
 
游客

返回顶部