1. 平台 Xilinx SDK2018.1
2. 问题:在裸机程序中使用lwip2.0.2版本,当本地IP地址设置为0.0.0.0时,无法发送udp数据。
3. 原因:
在udp_sendto()函数中,调用ip_route()函数,判断本地ip是不是0x00000000即0.0.0.0。
当判断本地ip为0.0.0.0时,会返回错误结果,导致无法正常发送数据。
4. 解决办法:
在SDK安装路径下修改ip4.c文件。
修改udp_sendto()函数,修改以下语句:
if (netif_is_up(netif) && netif_is_link_up(netif) && !ip4_addr_isany_val(*netif_ip4_addr(netif))) {
改为:
if (netif_is_up(netif) && netif_is_link_up(netif) ) {
另外,
if ((netif_default == NULL) || !netif_is_up(netif_default) || !netif_is_link_up(netif_default) ||
ip4_addr_isany_val(*netif_ip4_addr(netif_default))) {
改为:
if ((netif_default == NULL) || !netif_is_up(netif_default) || !netif_is_link_up(netif_default) ) {