Over
驱动牛犊
驱动牛犊
  • 注册日期2001-09-26
  • 最后登录2002-08-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:958回复:1

Amcc5933同步方式DMA驱动程序问题求助!!

楼主#
更多 发布于:2002-01-14 16:21
自己做的板子,使用amcc5933作pci接口控制芯片。

把amcc5933设置为pci master方式,使用addon to pci的fifo(以下简称fifo),同步方式,dma传输。基本上用的是这个驱动开发网上的amcc5933pciwdmv1.4.zip那个例子。已经可以传输。但是只要接收频率超过1M,接收到的数据就会有错误!

问几个相关问题,各位老大一定要帮忙啊!

1、addon端对fifo需不需要保护?也就是说,是否需要做逻辑,当fifo满了以后就停止往fifo里写数?我这个板子做保护了。

2、当第一次dma完成,驱动程序进行处理时,addon端数据仍然往fifo里写,而驱动程序已经不从fifo里取数了,这段时间fifo会不会被写满?fifo只有8个32位深。我这个板子1M频率以上时,每次dma完成处理fifo就会被写满。所以需要对fifo做保护。但商业板子的驱动就不会被写满(可惜没有源代码)!

3、现在接收频率超过1M后,收到的数据错误很有规律,大致情况如下(发生错误的次数大概是20-50次/100M)

   ...11 12 13 2c 2d 2e 2f 18 19 1a ...
               ~~~~~~~~~~~
   以上2c 2d 2e 2f应该是14 15 16 17,数据源其实就是从00到ff一直循环。考虑到fifo是8个32位深,假如数据在fifo中是这个样子:
      (10 11 12 13) <- 已取走
      14 15 16 17 <- 应该取这4个数
      18 19 1a 1b
      1c 1d 1e 1f
      20 21 22 23
      24 25 26 27
      28 29 2a 2b
      2c 2d 2e 2f <- 实际取的这4个数
      30 31 32 33

   这又是为什么呢?

   myemail:   regainworld@263.net
当我们仰望星空,其实是在回顾历史
Over
驱动牛犊
驱动牛犊
  • 注册日期2001-09-26
  • 最后登录2002-08-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-01-14 17:17
真衰!
1M以下也出错,老板说了,有高手愿意指点的话,可以出点儿血,价格面议。
当我们仰望星空,其实是在回顾历史
游客

返回顶部