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