ST意法半导体
直播中

任凭风吹

10年用户 1084经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术 制造/封装 模拟技术
私信 关注
[问答]

移植LWIP+FREERTOS时遇到的问题怎么解决?

各位大佬,小弟在尝试移植LWIP+FREERTOS的时候出现了如下问题,请各位大佬帮忙看看是哪里的问题,我用了FreeRTOS+LWIP做ModbusTCP时出现了链接出现通信12次然后通信中断,并且再也没法ping 通的问题,表现的现象是进不去以太网中断,导致 ethernetif_input()接收不到数据
移植过程是这样的:(STM32F407+DP83848)

1:首先移植RTOS+固件库,移植成功,并且跑了几个串口通信的任务,测试大概两三天的样子,并没有出现问题。
2:移植LWIP1.4.1 (从ST官网下载的那个网页的例程,修改引脚定义后跑在板子上没问题,确认硬件没问题)
3:将ST官网的LWIP1.4.1 的例子(关于LWIP的部分)移植到步骤1 的FreeRTOS 系统的工程里面,只是添加LWIP初始化的任务,并没有调用任何接口的情况下可以Ping 通 而且长时间Ping 也没问题。
4:调用一个连接,编写函数,将受到的数据发送回去,出现了通信12次就没法在通信的问题(发12次,收12次,通信数据包无论长短,都是12次)而且ping 也ping 不通了。
5:自己写了Modbus-TCP的代码,也是同样的通信12次,也没法通信了,
请教各位大佬,有遇到过类似的情况吗?

回帖(1)

恩可口

2025-3-12 17:41:29

在移植LWIP + FreeRTOS时遇到通信中断的问题,可能涉及多个方面的原因。以下是一些常见的排查步骤和解决方法,希望能帮助你定位问题:


1. 检查硬件连接和配置



  • PHY芯片配置:确保DP83848的硬件连接和配置正确,特别是时钟、复位引脚和中断引脚。

  • 中断配置:检查以太网中断是否正确配置,确保以太网中断能够触发,并且中断服务程序(ISR)能够正常执行。

  • 时钟配置:确保STM32F407的时钟配置正确,特别是以太网相关的时钟(如RMII时钟)。


2. 检查LWIP和FreeRTOS的配置



  • 内存管理:LWIP需要足够的内存来管理网络数据包。检查MEM_SIZEPBUF_POOL_SIZE等配置项,确保内存足够。

  • 任务优先级:确保以太网任务(如ethernetif_input)的优先级设置合理,避免被其他高优先级任务阻塞。

  • 堆栈大小:检查FreeRTOS任务的堆栈大小,确保任务有足够的堆栈空间,避免堆栈溢出。

  • 中断优先级:确保以太网中断的优先级设置合理,避免被其他高优先级中断抢占。


3. 检查LWIP的初始化和任务



  • 初始化顺序:确保LWIP的初始化顺序正确,特别是lwip_init()netif_add()netif_set_up()等函数的调用顺序。

  • 任务创建:确保LWIP的任务(如tcpip_thread)正确创建并运行。

  • 数据接收:检查ethernetif_input()函数,确保它能够正确接收和处理以太网数据包。


4. 调试和日志



  • 中断调试:在以太网中断服务程序中添加调试信息,确认中断是否被触发。

  • 任务状态:使用FreeRTOS的任务状态查看工具(如vTaskList())检查各任务的状态,确认是否有任务阻塞或死锁。

  • 日志输出:在关键函数中添加日志输出,确认程序的执行流程是否符合预期。


5. ModbusTCP相关



  • 连接管理:检查ModbusTCP的连接管理逻辑,确保连接正确建立和关闭。

  • 超时处理:检查ModbusTCP的超时处理逻辑,确保在超时情况下能够正确恢复。

  • 数据包处理:确保ModbusTCP的数据包处理逻辑正确,避免数据包丢失或错误。


6. 其他可能的原因



  • 硬件故障:检查硬件是否存在故障,特别是以太网接口和PHY芯片。

  • 软件冲突:检查是否有其他任务或中断与以太网任务冲突,导致以太网任务无法正常运行。


7. 参考例程



  • 官方例程:参考ST官方提供的LWIP + FreeRTOS例程,确保移植过程中的关键步骤与官方例程一致。

  • 社区资源:查阅STM32和LWIP相关的社区资源,寻找类似问题的解决方案。


8. 逐步排查



  • 简化问题:尝试简化问题,例如先只运行LWIP和FreeRTOS,确保基本功能正常,再逐步添加ModbusTCP功能。

  • 分步调试:分步调试,逐步确认每个模块的功能是否正常,定位问题的具体位置。


通过以上步骤,你应该能够逐步定位并解决移植LWIP + FreeRTOS时遇到的问题。如果问题仍然存在,建议提供更多的调试信息和代码片段,以便进一步分析和帮助。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分