DSP6657作为客户端与PC或者其他开发板(作为服务器)收发TCP数据,目前想以10ms/帧的速度进行数据发送,并在任何时候都可以接收数据(非实时),故在DSP6657中建立中断号为99的以太网接收中断。
但是在DSP每次进行send函数时,DSP却会在对方没有发送数据包的情况下进入该接收中断(rawsocket走数据链路层不会发生该情况),而且会多次进入,但之后用recvnc函数却接收不到任何数据,返回值为-1,这样不断触发中断并接收空数据就会导致浪费大量时间,远远不能满足10ms/帧的速度要求。
如果DSP改为轮询方式收数据,每次recvnc函数在收不到任何数据并返回-1时,会运行很长时间(clock计时为0.7s左右),也远远不能达到要求,而recvnc函数在能接收到数据时却运行很快。
请问有什么办法能做到上述的要求??
user5992872:
感觉是TCP的应答机制错误触发了网络的接收中断
Shine:
请问用的是NDK吗?
user5992872:
回复 Shine:
是的使用的库函数都是NDK里的
Shine:
回复 user5992872:
请问在NDK例程上做了哪些修改?NDK版本是多少?
user5992872:
回复 Shine:
你好,在NDK例程上加了个10ms定时器,循环发送,并增加了一个中断号为99的EMAC RX中断,NDK版本 ndk_2_24_03_35
user5992872:
回复 user5992872:
你好,主要想知道有没有什么办法可以解决EMAC RX中断在TCP包连接、发送过程中错误进入的问题,或者解决recnev函数接收空数据包速度很慢的问题?
Shine:
回复 user5992872:
方便分享一下解决方法吗?
user5992872:
回复 Shine:
原本的接收函数会等待一段时间如果期间有数据来就接收,我现在就是把库函数里接收等待的时间改成0了。