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.

[参考译文] TMS570LC4357-TMS570LC4357:FreeRTOS + LWIP 应用中的 EP 错误

Guru**** 2382630 points
Other Parts Discussed in Thread: TMS570LC4357
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1346649/tms570lc4357-ep-tms570lc4357-error-with-freertos-lwip

器件型号:EP
主题中讨论的其他器件:TMS570LC4357

您好!

我目前正在使用 TMS570LC4357芯片、并且已成功将带有 RMII 接口的 LWIP 移植到其中。 现在、我正在尝试将 FreeRTOS 移植到它上面、但遇到了一个问题:启用任务调度后、从计算机 ping 电路板仅成功两次;但禁用任务调度后、ping 持续成功。

在我的项目中、我首先执行必要的系统初始化、然后初始化 LWIP、启用系统中断、最后创建三个任务。 两个任务处理串行打印、而一个任务控制 LED 闪烁。 所有三个任务都将相同的优先级设置为1。

观察结果:当 LWIP 处理函数在 EMAC 接收中断内且使用了 vTaskStartScheduler 时、系统上电后、只能成功接收到两个 Ping 数据包。 如果我注释掉 vTaskStartScheduler 函数、则可以实现连续 ping。

后来、我将 LWIP 处理功能移到了一个任务中、并将其优先级设置为2。 在 EMAC 接收中断内部、我给出一个信标、然后在任务中、我尝试获取信标。 如果成功、我将继续进行数据处理。 但是、问题仍然存在、并且未成功接收到数据包。

随后,我确认一旦进入任务, ping 会变得无效。 这样做的原因是什么? (如果我在 vTaskStartScheduler 函数前添加长延迟、ping 的成功率会相应增加、当断点在任务内停止时、ping 超时。)

如何解决此问题? 非常感谢您的协助。

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 HU:

    我们的此设备专家正在休假、因此请预计他们会稍微延迟回复。

    此致、

    拉尔夫·雅各比

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    禁用缓存功能后、上述问题消失了。 您能否告知 FreeRTOS 任务调度和高速缓存功能之间是否存在冲突?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的胡江博:

    禁用缓存功能后,上述问题消失。 您能否告知 FreeRTOS 任务调度和缓存功能之间是否存在冲突?

    无法确定禁用缓存后问题的确切解决方式。  此行为分析需要项目。

    --
    谢谢。此致、
    Jagadish。