我们现在的TMS320C6670方案目的:主要是处理网络上的数据收发。具体情况:
core0:linux-c6x的系统,运行对时序要求不高的一些应用,以及core1/2/3的加载。
core1/2/3:sysbios的系统,运行实时系统进行自研的网络协议处理,并且负责了pa,qmss,cppi的初始化,以及pa过滤规则配置。
使用了sgmii0/1的网口:sgmii0的数据直接由core0处理,sgmii1的数据向外发送先由core0 640队列发送给pa,再由初始化定义的规则转至core1,core1进行一定的处理后通过648队列发送到sgmii1出去。
现在的问题是在工作过程中发先从sgmii1出去的数据有丢包,经过计数对比后core0 640队列->pa->core1 729队列接收时发生了丢包。
问如何能定位的更精确是哪一阶段丢包?pa内部丢包有可能么??qmss里只有队列当前描述符个数的统计,但因为qmss工作速度快每次发送时调用push操作后再读取queue里的
描述符个数就发现count为0。现在也不知道如何再继续定位分析丢包的原因了。能否给些建议?
Andy Yin1:
丢包具体体现的现象是啥,是怎么观察到的。
在GE内部有统计模块,记录各个端口收发的数据包个数,可以查看统计分析;另外可以改变数据方向,将数据送回core0看看报文个数是否一致。
He Huan:
回复 Andy Yin1:
具体队列配置如下:
1) core0通过640队列将描述符发给pdsp0,884队列负责回收;
2) core1通过729队列接收core0描述符中发送过来的数据,qmss_AccCmdCfg中的channel配置为9,maxPageEntries为4。
3) core1的接收中断处理函数eventID=48+(9/4)=50,vectID=7+(9/4)=9。
现象是:
1) core0描述符通过tx 640队列发送完顺利回收到884,从计数看无描述符丢失现象
2) core1接收中断统计里发现收到数据有丢失的,从中断统计看就比发送端计数少。
He Huan:
回复 Andy Yin1:
目前是核间通信丢包。
He Huan:
回复 Andy Yin1:
因为core0通过640队列将描述符发送到pdsp0中,通过规则配置core1的729队列负责接收。
通过观察pdsp0的收包计数器发现包个数与core0发出的一致,但在core1的中断接收里就发现比实际发出的少。