打印
[i.MX]

关于I.MX6Q ecspi RXFIFO OVERFLOW(未解决)

[复制链接]
3902|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tfirst|  楼主 | 2014-8-13 17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tfirst 于 2014-9-29 12:29 编辑

我们在开发一个产品,该产品通过SPI接口(SPI接口工作方式为SLAVE模式)从外部无线传输模块接收H.264数字视频,存储到SD卡中,并进行解码显示。在该应用模式下,无线传输模块会一直往SPI接口发送数据。
测试环境:
发送方:I.MX31(LINUX2.6.28),工作于8bit,master模式,DMA发送传输,16MHZ clock。
接收方:I.MX6DQ(Linux3.0.35),工作于32bit,slave模式,DMA接收。
结果:接收到的数据与发送端的数据进行比较,发现接收端会丢失数据,通过在DMA传输的回调函数中,加入状态判断,会出现CSPI RX FIFO溢出的情况。
我们之前有个项目使用I..MX31/I.MX515来接收,使用DMA来进行接收并将数据存储到SD卡中,均不会出现overflow的现象。
由于I.MX6DQ上的ECSPI驱动程序与I.MX31上的CSPI驱动程序使用相同的框架,以及相同的数据缓冲策略,仅仅是在调用的DMA相关函数上有些区别。在LINUX2.6.28的内核上使用的都是FSL提供的接口,而在Linux3.0.35上使用的都是dmaengine接口。
但如果仅仅接收而不进行存储,则不会出现RXFIFO overflow的情况。我看过BSP中SD卡的驱动代码,发现是驱动是使用了DMA,在代码中我又发现有一句注释这样写道“ ADMA has issues. Might be fixable ”,所以目前的L3.0.35_4.1.0_130816BSP中,SD卡驱动没有用ADMA。
因此我怀疑是不是在IMX6Q上,关于ECSPI的SDMA和SD卡的SDMA上是不是有冲突。后来我将SD卡改用PIO的模式,应用程序采用两个线程进行测试,一个线程用于从ECSPI中读取数据读到一个环形缓冲区中,另一个线程从该环形缓冲区中读取数据并将数据写入SD卡当中,并且这两个线程分别运行在不同的核上,该测试结果同样会导致RXFIFO OVERFLOW。
对于该问题,已经耽搁好几天了,我已经给飞思卡尔发过邮件请求帮助,但是飞思卡尔那边反应没那么积极。希望能够得到大家的帮助。


我在论坛的回帖,我看不到,不知道是不是已经发了,所以在原帖添加一些内容。
我们使用的板子是飞思卡尔官方的开发板,MCIMX6Q-SDB.
另外,我们又做了如下的测试:
Testcase 1: Receive data from SPI but save the data to a temporary, after about 30MB datum was received, stop SPI reading and store the datum
to TF card.
Result : RXFIFO of ECSPI didn't overflow during reading SPI, and the datum received is correct.

Testcase 2: Receive data from SPI , store datum to a USB DISK.
Result: RXFIFO of eCSPI overflow .

Testcase 3: create two threads, and set cpu affinity to each threads, thread one works on core 1, thread two works on core 2.
            Thread One is just to read datum from SPI and store to a ring buffer, Thread TWO is to read datum from the ring buffer
            and store the datum to TF card.
Result:  RXFIFO of eCSPI overflow.

Testcase 4: Launch two process,  Process ONE is a background process, it is just to read SPI data but not store to any disk,
            process TWO is a foreground process, it is to decode an h264 video file which is in the TF card.
            (or process TWO is to write random data to TF card).
Result: RXFIFO of eCSPI overflow.

Testcase 5: make the SD device driver work in PIO mode and eCSPI in DMA mode, received datum fro SPI and store datum to
          SD card.
Result:  RXFIFO of eCSPI overflow.

Testcase 6: make the eCSPI driver work in interrupt mode instead of DMA mode and SD card in DMA mode, receive data from SPI
        and store datum to TF card.
Result:  RXFIFO of eCSPI overflow.        

相关帖子

沙发
FSL_TICS_Rita| | 2014-8-14 08:51 | 只看该作者
楼主你好,请问你使用的板子都是开发板,还是自己设计的呢?

使用特权

评论回复
板凳
FSL_TICS_Rita| | 2014-9-12 16:23 | 只看该作者
楼主你好,关于你帖中的问题,如果你还是没有解决的话,建议你到https://bbs.21ic.com/icview-684518-1-1.html提交一个SR。

使用特权

评论回复
地板
tfirst|  楼主 | 2014-9-29 12:27 | 只看该作者
FSL_TICS_Rita 发表于 2014-9-12 16:23
楼主你好,关于你帖中的问题,如果你还是没有解决的话,建议你到https://bbs.21ic.com/icview-684518-1-1.ht ...

早在8月初,我们就已经通过support@freescale.com提交过一个帮助请求了,但是目前仍未进行到实质问题的查找阶段,freescale的支持太慢了。
另外,就我们使用freescale的imx系列产品6、7年的经历来看,freescale的技术支持跟不上,而且效率非常低

使用特权

评论回复
5
FSL_TICS_Rita| | 2014-9-29 15:37 | 只看该作者
tfirst 发表于 2014-9-29 12:27
早在8月初,我们就已经通过support@freescale.com提交过一个帮助请求了,但是目前仍未进行到实质问题的查 ...

楼主你好,关于你提的这个问题我不熟悉,所以也没有办法给您更好的建议。一般都是论坛上我们解决不了的问题,都会让客户提交技术服务请求,由我们全球的工程师来回答。

使用特权

评论回复
6
FSL_TICS_Rita| | 2014-9-29 15:39 | 只看该作者
tfirst 发表于 2014-9-29 12:27
早在8月初,我们就已经通过support@freescale.com提交过一个帮助请求了,但是目前仍未进行到实质问题的查 ...

要不这样,你把你创建技术服务请求的SR号码发给我一下,我看是谁在帮你答,帮你催一下的。非常抱歉了,我们会做相关的改变,争取给大家提供更好的支持。

使用特权

评论回复
7
tfirst|  楼主 | 2014-10-11 15:04 | 只看该作者
SR# 1-2210814679
是JIMMY负责跟踪的,但是JIMMY说这个问题因为是使用方面的原因,相当于要重新写一个驱动了。

使用特权

评论回复
8
FSL_TICS_Rita| | 2014-10-11 17:13 | 只看该作者
tfirst 发表于 2014-10-11 15:04
SR# 1-2210814679
是JIMMY负责跟踪的,但是JIMMY说这个问题因为是使用方面的原因,相当于要重新写一个驱动 ...

楼主你好,关于这个问题我帮你问了一个,Jimmy他也帮你和这边的专家组讨论了一下,他今天也给过你回复了。只能这样了,没有更好的解决办法了。这边就是这个情况。其他的我也没有问到什么了。

使用特权

评论回复
9
smish| | 2015-4-17 00:22 | 只看该作者
你好,你的I.MX6从模式的的驱动是怎么调出来的,方便的话给我看看,我也在做,但是还没成功,谢谢。邮箱xinxianglongnl@163.com

使用特权

评论回复
10
heyanmou| | 2015-5-3 18:20 | 只看该作者
楼主你好,请问你的这个问题解决了没,我目前使用的是IMX25的处理器,和你的情况挺类似的,但是我的速率达到1~2M的时候都会出现RXFIFO OVERFLOW,我目前没有使用DMA方式,正在想办法调试DMA,但是仿照了UART驱动的DMA方式还是有问题,希望你能指点下,谢谢。

使用特权

评论回复
11
mini1986| | 2015-5-4 08:26 | 只看该作者
本帖最后由 mini1986 于 2015-5-4 08:28 编辑

个人认为,spi一般用不到DMA吧......如果速度快书局量大的话,可能要用到了......

使用特权

评论回复
12
liuyingjiewjs| | 2015-10-29 14:18 | 只看该作者
楼主你好,请问一下关于spi dma驱动移植的代码。是否可以借我参考一下,我愿意有偿使用,我的联系方式qq:30622658.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

3

粉丝