Tool/software: TI-RTOS
I'm using a Launchpad TM4C1294 board to develop Modbus/TCP communication with the help of TI-RTOS and NDK. The application works very well at the beginning. The board is communicating well with my PC host interface and proper modbus formatted messages are being exchanged with my LabVIEW interface. The semaphore is being posted and pending works well. My code uses the NDK recv() function inside my user created ModbusServer() function. recv() is set to non-blocking.
Unfortunately after about 30 seconds of data transmission, the semaphore_pend() no longer seems to respond. I know that semaphore_post() is still working as I can see the count at 1 and the debugger still responds to breakpoints in the semaphore_post() contained function.
My debugging capability is evolving as I'm new to RTOS. I haven't noticed any unusual stack issues for the tasks in ROV. My execution graph works as expected up until the point of the lost semaphore_pend() at which time I can't graph any new events. I'm using an LED on the board to help me determine that the semaphore_pend() is blocking. When I halt the code after the Semaphore_pend() fails, I often find the code in Clock_workFuncDynamic() in the file "clock.c" with the exception when servicing clock0 which successfully calls MainLoopTrigger and appears to post the Semaphore.
I greatly any appreciate help debugging this issue. I've been working on this issue for a couple of days now and have reached the limit of my current debugging capability. I hope by reaching out in this forum that I can extend my knowledge and debug this issue. My software versions and screenshots are provided at the end of this post for your reference. Thank you for taking the time to review this request.
Sincerely,
Ryan
Compiler version TI v16.12.0.STS
NDK 2.25.0.09
CCS 7.0.0.00042
TI-RTOS for TivaC 2.16.01.14
Related posts #1: https://e2e.ti.com/support/embedded/tirtos/f/355/t/275695
Related post #2: https://e2e.ti.com/support/embedded/tirtos/f/355/t/248310
EVENT SETUP:
CODE:
When Semaphore_pend() no longer seems to respond, the program appears to stay within Clock_workFuncDynamic() in the file "clock.c" except when servicing clock0 which successfully calls MainLoopTrigger.