最近测试rt thread 3.1.3版本+lwip 2.0.2协议的网络部分功能,程序上电运行默认是开启DHCP功能的,执行DHCP关闭后,设置一个IP地址,再执行DHCP打开后,程序就无法获取到IP地址。经过查看网络部分的相关驱动代码,发现netdev_dhcp_enabled()调用到底层后并没有实际操作dhcp相关的函数,所以不会生效,修改办法就是ethernetif.c程序中168行增加控制dhcp_start(),dhcp_stop的功能。
我当时也发现了这个问题,他这里只改了网卡标志,并没有真正对DHCP操作,我用的netdev,在netdev_register中设置了netdev->status_callback状态改变回调函数,然后在回调函数中开关DHCP