Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15308734
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: 嵌入式

2009-10-28 12:15:40

关于plx9656使用中DMA块block传输与sg传输的理解

  这2种传输模式都能同时启用dma0和dma1,唯一的区别就是sg可以链接
用户空间分配的诸多不连续物理内存页,block块是sg的一个特例而已,
  这段时间一直困扰的问题:plx9656不能同时启动dma0和dma1传输,
的问题已经找到答案[luther.gliethttp],
   原:dwritel(dma_cmd, plx9656_base + PLX_ADDR_DMA0_CMDSTS);
   新:dwriteb(dma_cmd, plx9656_base + PLX_ADDR_DMA0_CMDSTS);

   原:dwritel(dma_cmd, plx9656_base + PLX_ADDR_DMA1_CMDSTS);
   新:dwriteb(dma_cmd, plx9656_base + PLX_ADDR_DMA1_CMDSTS);

   原:dwritel(PLX_CMDSTS_CLRINT, plx9656_base + PLX_ADDR_DMA0_CMDSTS);
   新:dwriteb(PLX_CMDSTS_CLRINT, plx9656_base + PLX_ADDR_DMA0_CMDSTS);

   原:dwritel(PLX_CMDSTS_CLRINT, plx9656_base + PLX_ADDR_DMA1_CMDSTS);
   新:dwriteb(PLX_CMDSTS_CLRINT, plx9656_base + PLX_ADDR_DMA1_CMDSTS);
所有对PLX_ADDR_DMA0_CMDSTS(0xA8)和PLX_ADDR_DMA1_CMDSTS(0xA9)
寄存器的操作地址宽度都改为单字节操作,以前的4字节操作导致0xA9被0xA8的高24位
数据填充为0,而对0xA9填充0,表示将pause DMA1的传输,直到写1才能恢复[luther.gliethttp]
阅读(3357) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~