This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6657的UPP访问出错

Other Parts Discussed in Thread: SYSBIOS

碰到一个很奇怪的问题,查了很久都找不到原因,想请教一下。我在自己的C6657电路板上运行程序,其中核0运行带SYSBIOS和NDK的程序,核1运行UPPA和UPPB同时不间断传输的程序,UPPA为发送,UPPB为DSP接收数据,UPP时钟为32M,单倍速率,UPP外部和FPGA连接;

正常情况下,比如核1运行不带NDK的程序时,核1的UPP传输不会受影响;

在有些情况下,核0的程序修改,会影响到核1的UPP传输,表现为UPP传输部分数据丢失;

怀疑是DMA访问DDR冲突,自己捕捉了下UPPB的wait信号,传输发生数据丢失现象时,没有wait信号输出;

又怀疑是PDK和NDK下面的驱动会影响到UPP的接口;UPP口本身是和EMIF接口共用的管脚,有没有可能NDK或者PDK里面的某些程序,对UPP口线的复用功能进行了配置?现在观察到的比较明显的现象,就是一旦NDK运行网络程序,UPPB接收就会丢数据,而且概率比较高,基本上传输500K LINE左右的数据就会丢掉几个甚至几十个LINE,我的LINE长度为40字节,一次配置传输256个line,请问这种情况可能是什么原因,有没有什么解决的建议?

  • 可能是NDK和UPP有共享的资源冲突了,请尝试把UPP的System Priority调高,请参考2.6.3 System Tuning Tips
    www.ti.com/.../spruhg9.pdf
  • 之前已经尝试过修改优先级,查看寄存器,发现确实发生了underrun。按这个文档的意思,在系统负荷较重的情况下,这种错误是无法避免的?如果处理不了,WAIT信号不起作用么?我现在系统的负荷和UPP标称的传输速度,还差的比较远,时钟才32M,单倍速率。
  • 我想确认的是,UPP的WAIT信号,在DSP接收数据时,是否有效,从我目前测试的结果来看,是无效的,这样看来UPP功能有点鸡肋
  • 按理Wait应该不会无效,检查一下配置是否用上了Wait.

    调整priority后有效果吗?或者降低时钟频率测试佐证一下。

  • 我们程序里面核0要用到EDMA和EMAC,之前EDMA包长比较长的时候,UPP运行出错的概率更高,后来软件把包长减小,同时提高UPP的优先级到1,其它的都是3,程序可以跑,但是还是有概率出错。WAIT信号,我目前测到的是,在配置UPP过程中,或者程序进入断点后,WAIT信号可以出来,但是传输过程中没有。
  • 这个寄存器,目前配置的是0x06070000,如果该寄存器不配置,UPP传输卡死概率更高;然后就是降低时钟频率,目前我将时钟降低到16M之后,卡死概率降低很多;卡死时间变长很多;至于WAIT信号,UPP发送的时候,UPPA确实是可以起作用的,UPPB接收时,WAIT信号根本不起作用,而卡死恰好发生在UPISR的寄存器位UORQ置位的时候;根据6657自己的手册时序图,接收时确实WAIT信号是无效的,一直为0

  • 把相关的代码粘上来看一下。