工具/软件:TI-RTOS
我正在使用 Launchpad TM4C1294板在 TI-RTOS 和 NDK 的帮助下开发 Modbus/TCP 通信。 该应用程序在开始时运行良好。 该板与我的 PC 主机接口通信良好、并且正在与我的 LabVIEW 接口交换适当的 Modbus 格式的消息。 信号量正在被发布、并且挂起工作正常。 我的代码使用 用户创建的 ModbusServer()函数内的 NDK recv()函数。 recv()设置为非阻塞。
不幸的是,在大约30秒的数据传输之后,Semaphore_pend()似乎不再响应。 我知道 Semaphore_post ()仍在工作,因为我可以看到计数为1, 并且调试器仍然响应 Semaphore_post ()包含函数中的断点。
我的调试功能随着我对 RTOS 的陌生而不断发展。 我没有注意到 ROV 中任务的任何异常堆栈问题。 我的执行图按预期工作、直到 Lost semaphore_pend()的点、此时我无法绘制任何新事件。 我正在使用板上的 LED 来帮助我确定 Semaphore_pend()正在阻断。 当我在 Semaphore_pend()失败后停止代码时,我经常在文件"clock.c"中的 Clock_workFuncDynamic ()中找到代码,但在处理成功调用 MainLoopTrigger 并显示为布置信标时除外。
非常感谢您在调试此问题时提供的帮助。 我 已经处理这个问题几天了、并且已经达到了我当前调试能力的极限。 我希望通过在这个论坛上进行接触、我可以扩展我的知识并调试这个问题。 本帖子末尾提供了我的软件版本和屏幕截图供您参考。 感谢您花时间查看此请求。
此致、
Ryan
编译器版本 TI v16.12.0.STS
NDK 2.25.0.09
CCS 7.0.0.00042
用于 TivaC 2.16.01.14的 TI-RTOS
相关帖子#1: https://e2e.ti.com/support/embedded/tirtos/f/355/t/275695
相关文章#2: https://e2e.ti.com/support/embedded/tirtos/f/355/t/248310
事件设置:
代码:
当 Semaphore_pend ()看起来不再响应时、程序似乎保持在 文件"clock.c"中的 Clock_workFuncDynamic ()内、除非正在处理成功调用 MainLoopTrigger 的 clock0。