TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6657: dsp1 和 dsp2的srio通讯 单独发好 同时发异常

Part Number:TMS320C6657

大家好 有个问题
我要实现dsp1 和 dsp2的srio通讯
现在dsp1通过lane C通道流写发给dsp2的ddr内存 dsp2的ddr内存里收数正确 这时dsp2不发
       dsp2通过lane C通道流写发给dsp1的ddr内存 dsp1的ddr内存里收数正确 这时dsp1不发
但是 当dsp1、dsp2同时发的时候 发现各自的收数就有问题了

因为我的两个dsp发数都是在task里的 间隔10ms发一次 所以有可能dsp1在发的同时 dsp1也在收(因为dsp2在同时发) 是不是这个问题引起的?

skysteed:

大家好 问题有变化  具体如下:

要实现dsp1 和 dsp2的srio对发

dsp1通过lane C通道写dsp2的ddr内存 是可以的

dsp2通过lane C通道写dsp1的ddr内存 有问题     dsp2的程序是在dsp1的程序基础上修改的 主要是修改了ID

一开始怀疑dsp2到dsp1的硬件通道有问题!

但是 我用dsp1的程序在dsp2上执行 用dsp2的程序在dsp1上执行 也就是交换了下程序 结果:

dsp2通过lane C通道写dsp1的ddr内存 是可以的!!! 也就是说dsp2到dsp1的硬件通道没有有问题!!!

看了下资料 和SP_GEN_CTL寄存器里的HOST 、MASTER_ENABLE、DISCOVERED有没有关系???

两个DSP直连进行通信 如何设置P_GEN_CTL???

,

Shine:

请问具体DDR内存有什么问题?是数据完全不对吗?建议用仿真器跟踪一下两边的代码。

,

skysteed:

你好 修改程序后

执行dsp1的程序 dsp1 可以单发到 dsp2 

执行dsp2的程序 dsp2 可以单发到 dsp1 

但互相对发时 也就是dsp1给dsp2  dsp2也给dsp1发 这时 就会有问题

是不是SRIO的工作机制不允许这样?

如下图 在传输层和逻辑层 需要特殊控制?

如果不可以 对发 那就只能dsp1做主机 对dsp2又写又读?

,

Shine:

SRIO是全双工,内部结构收发模块和serdes都是独立的。请看一下下面的帖子是否有帮助。https://e2e.ti.com/support/processors-group/processors/f/processors-forum/353000/c66-srio-full-duplex-bandwidthhttps://e2e.ti.com/support/processors-group/processors/f/processors-forum/210883/c6678-srio-is-full-duplex

,

skysteed:

你好 问一下 CSR and CAR Registers中的DEV_ID 和 BASE_ID有什么区别?

DEV_ID中有DeviceIdentity 和 Device VendorIdentity 表示设备ID 和 设备供应商ID

BASE_ID中有BASE_DEVICEID 和 ASSY_VENDORIDENTITY 表示8位的ID 和 16位的ID

我的系统中dsp1 连接了FPGA、dsp2 

那么dsp1的id 假设0x12 要设置到DEV_ID中的DeviceIdentity 还是BASE_ID中的BASE_DEVICEID 

那么给fpga、dsp2的目的id 

我看手册上说:

作为终端设备,外设根据目的地ID接受数据包。数据包接受有两个可选模式选项。第一个选项只接受其目的地与本地设备ID匹配的数据包。这提供了一定程度的安全性。第二个选项是系统多播操作。SPRUGW1C的26页

如果第一个选项的话 是不是需要用到 TLM Port(n) Base Routing Register Control Register   

                                                            TLM Port(n) Base Routing Register Pattern and Match Register

和fpga的路由是不是不需要上述寄存器?

,

Shine:

Base_ID是16个device ID中的一个,他的值会自动复制到deviceID1中。另外,可以看一下附件SRIO编程文档和下面的帖子。https://e2echina.ti.com/support/processors/f/processors-forum/110321/c6657-srio-deviceidSRIO_Programming_Performance.pdf

,

skysteed:

好的 谢谢了 问题基本解决了!

但还有个问题 是这样的:两个dsp之间srio收发执行程序 点暂停 然后从新加载程序 再执行 就会通信不上 

但先点击system reset 再从新加载程序 再执行 就正常

我也知道system reset后 好多寄存器 包括srio的都清零 恢复初始值了 和这有关

别的程序 暂停 直接从新加载 不system reset 就是好的

这个如何解决了?和6657的LRESETNMIEN、LRESET有没有关系???

,

Shine:

system reset会reset整个芯片,可以看一下下面ccs reset的功能。https://software-dl.ti.com/ccs/esd/documents/xdsdebugprobes/emu_resets.html#ccs-reset-types

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6657: dsp1 和 dsp2的srio通讯 单独发好 同时发异常
分享到: 更多 (0)