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

DSPC6678 基于NDK的UDP通信,当上位机发送5000包后,就再无法发送下去——–急

各位大牛,

我在做基于NDK的C6678的 的UDP的通信,网络调试助手连续发64Byte数据过来, 然后通过SRIO发送FPGA,回环, 最后又返回给网络调试助手。

当我发送到5000多包数据后, 下位机不再接收了,此时ping不通网络。

找了好多资料, 尝试一些解决方法

1.之前是用那个recvncfrom接收, 现在改成recvfrom接收, 这个需要从网络接收缓冲池赋值一份。结果最多能就收5700多包, 未改之前,只能接收200包

2.修改UD缓冲池大小为65500 ,仍然一样

3.网上找资料,说是应为,主线程一直占用CPU, 而基于NDK的守护线程的执行函数, 无法调用,导致无发刷新数据队列,导致堵塞

博客在此: 

blog.csdn.net/…/48751999

博客中说:

.NDK的守护任务在完成初始化后即会自动降低Task优先级至最低的IDLE Task级,若用户Task执行在高于IDLE的优先级,且一直不通过阻塞来主动放弃执行时间的话,则NDK的数据报队列状态将一直得不到更新,从而导致用户Task的socket函数无法正常接收和发送数据报

我按他给的方法,试验过,还是不能解决, 望各位大牛指导,谢谢!!!!

fendou yang:

自己顶下

Denny%20Yang99373:

建议先把其他无关任务都关掉,做一个最简单的任务,就是UDP数据收发,看看是否稳定。

或者直接用NDK的DEMO看看是否稳定

如果不稳定,可能需要考虑是不是硬件有点问题了

如果稳定,再考虑任务优先级划分的问题

fendou yang:

回复 Denny%20Yang99373:

首先,谢谢您。
这种方法,我试过了,就是网络初始化完成后,网络守护任务优先级降到最低,之后的另一个主任务,只做UDP的回环。 一点问题都没有。 所以可以排除硬件的问题。

Shine:

回复 fendou yang:

请参考下面的NDK FAQ。
processors.wiki.ti.com/…/Network_Developers_Kit_FAQ

赞(0)
未经允许不得转载:TI中文支持网 » DSPC6678 基于NDK的UDP通信,当上位机发送5000包后,就再无法发送下去——–急
分享到: 更多 (0)