Dear all,
I'm running a NDK application which consists of two UDP daemons:
static void NetworkOpen()
{
udp_rx_test = DaemonNew( SOCK_DGRAM, 0, 5002, udp_rx_test,
OS_TASKPRILOW, OS_TASKSTKHIGH, 0, 1 );
udp_tx_test = DaemonNew( SOCK_DGRAM, 0, 5001, udp_tx_test,
OS_TASKPRILOW, OS_TASKSTKHIGH, 0, 1 );
}
One of these daemons sends UDP datagrams to a UDP server in a PC. The other receives UDP packets from a UDP client running in a PC. The purpose of this application is the measurement of networking performance.
When both daemons are running (not listening but active sending and receiving), I'm getting the following error randomly:
[C66xx_0] 00020.1662 Illegal priority call to llEnter()
[C66xx_0] 00020.1706 Illegal call to llExit()
And NDK is dead after this.
Additional details of my application are:
- XDCTools version: 3.24.7.73
- SYS/BIOS version: 6.35.1.29
- MCSDK version: 2.1.2.6
- PDK for C6670 version: 1.1.2.6
- NDK version: 2.22.2.16
- The daemon / thread which sends UDP packets (sendto) is calling Task_sleep(1)
- The daemon / thread which receives UDP packets is calling blocking recvncfrom.
- In order to increase performance, I have set Clock Tick period to 10us (ten microseconds). Therefore, I have adjusted NDK tick period to 10000 (100miliseconds, as stated in NDK user's guide).
- Both threads are low priority.
- I have set heap mem size huge. And also UDP rx buffers and NDK buffers (lots of megabytes). So I think NDK cause of deadh is not lack of memory.
- Network scheduler priority low or high, does not matter with respect to the deadh of NDK
Please, any help is wellcome.
Thanks in advance.
Kind regards,
Ricardo