最近在做一个项目,使用的6678评估模块,核0跑TCP程序接收和发送数据(数据量较大),核1-7对数据进行处理,使用Notify_sendEvent()函数和二进制信号量Semaphore_Handle进行核间通信。但最近在程序调试中出现了程序突然停止的现象(即不再打印调试信息,不发送数据也不接收数据),然后暂停核0重新开始后又恢复正常运行,有时程序运行几十秒停止,有时几分钟停止。请问有没有人遇到过类似情况或者知道如何解决的,请指教,不胜感激!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
最近在做一个项目,使用的6678评估模块,核0跑TCP程序接收和发送数据(数据量较大),核1-7对数据进行处理,使用Notify_sendEvent()函数和二进制信号量Semaphore_Handle进行核间通信。但最近在程序调试中出现了程序突然停止的现象(即不再打印调试信息,不发送数据也不接收数据),然后暂停核0重新开始后又恢复正常运行,有时程序运行几十秒停止,有时几分钟停止。请问有没有人遇到过类似情况或者知道如何解决的,请指教,不胜感激!
这个问题范围比较大,建议先缩小范围,您看若只跑核0会不会有问题,这样可以区分只和以太网有关还是说和核简通信有关
我试过了,只用核0跑NDK的程序,假如用一个socket连接,数据发送和接收都没有问题。假如用两个socket连接,都是TCP,一个用来接收数据,一个用来发送数据,如果发送的数据量较大,就会出现停止的问题。然后暂停调试,重新开始,程序又可以运行一段时间。如下图,每次发送6220不会出现问题,改成62200就会出现问题。
我试过了,只用核0跑NDK的程序,假如用一个socket连接,数据发送和接收都没有问题。假如用两个socket连接,都是TCP,一个用来接收数据,一个用来发送数据,如果发送的数据量较大,就会出现停止的问题。然后暂停调试,重新开始,程序又可以运行一段时间。如下,每次发送6220不会出现问题,改成62200就会出现问题。
while (1) {
totalBytes=0;
while (totalBytes < 10000) {
i= recvfrom(stcp,addr,10000 - totalBytes, 0,(PSA)&sin1,&sinSize);
totalBytes+=i;
}
send(stcp2,sendaddr,6220,0);
}
并不是重新加载,只是暂停后继续运行。调试的时候有一个暂停按钮,,点一下,然后再点一下前面的开始按钮又会正常运行一段时间,一会又停止。