主题中讨论的其他器件:TMS570LC4357
您好!
我目前正在使用 TMS570LC4357芯片、并且已成功将带有 RMII 接口的 LWIP 移植到其中。 现在、我正在尝试将 FreeRTOS 移植到它上面、但遇到了一个问题:启用任务调度后、从计算机 ping 电路板仅成功两次;但禁用任务调度后、ping 持续成功。
在我的项目中、我首先执行必要的系统初始化、然后初始化 LWIP、启用系统中断、最后创建三个任务。 两个任务处理串行打印、而一个任务控制 LED 闪烁。 所有三个任务都将相同的优先级设置为1。
观察结果:当 LWIP 处理函数在 EMAC 接收中断内且使用了 vTaskStartScheduler 时、系统上电后、只能成功接收到两个 Ping 数据包。 如果我注释掉 vTaskStartScheduler 函数、则可以实现连续 ping。
后来、我将 LWIP 处理功能移到了一个任务中、并将其优先级设置为2。 在 EMAC 接收中断内部、我给出一个信标、然后在任务中、我尝试获取信标。 如果成功、我将继续进行数据处理。 但是、问题仍然存在、并且未成功接收到数据包。
随后,我确认一旦进入任务, ping 会变得无效。 这样做的原因是什么? (如果我在 vTaskStartScheduler 函数前添加长延迟、ping 的成功率会相应增加、当断点在任务内停止时、ping 超时。)
如何解决此问题? 非常感谢您的协助。
谢谢你。