基于lwIP的TMS570LS3137单片机UDP数据发送故障排查
故障原因排查方向
- IP地址未就绪:版本2仅发送DHCPv6请求,说明设备在尝试自动获取IPv6地址但未成功分配,此时lwIP因无有效源IP地址,会阻止UDP报文发送。检查IP配置模式:若用静态IP,确认IP、子网掩码、网关与网络环境匹配;若用DHCPv6,调试查看lwIP的IP结构体,确认是否获取到有效地址。
- UDP套接字配置错误:检查两个版本中UDP套接字的创建与发送逻辑:是否通过
udp_new()成功创建套接字,目标IP和端口是否正确填充(注意端口需用htons()转换为网络字节序),udp_send()/udp_sendto()的参数是否合法(比如目标地址结构体未正确初始化)。 - lwIP内核与时钟异常:TMS570的lwIP依赖正确的系统时钟与内核调度。确认
sys_arch_init()完成初始化,lwIP的时钟节拍配置与硬件时钟匹配。若lwIP内核任务未正常调度,上层UDP报文无法传递到网卡驱动。 - 网卡驱动或硬件故障:检查以太网PHY芯片初始化状态(查看驱动初始化返回值),确认MAC地址无冲突,硬件网线、RJ45连接正常。若网卡未正确启动,即使上层逻辑正常,报文也无法输出到物理网络。
- lwIP配置项错误:查看
lwipopts.h:确保LWIP_UDP已定义为1开启UDP功能;若使用IPv4,需开启LWIP_IPV4(版本2仅发DHCPv6可能是IPv4未启用,导致只能走IPv6但地址未就绪);检查LWIP_DHCP/LWIP_DHCP6配置,若依赖自动获取但未拿到地址,lwIP会处于地址未就绪状态,禁止UDP发送。 - 发送时机不当:确认UDP发送代码在
netif_set_up()之后执行,或在lwIP任务调度循环中触发。若在网卡未启动时发送报文,会被lwIP直接丢弃。
内容的提问来源于stack exchange,提问作者Akagami Shanks
相关产品推荐
相关产品推荐

