Open rockwarrior opened 3 years ago
I've made some progress on this issue by debugging the bootloader firmware application. It appears that the bootloader application actively rejects any IP address of the form 169.xx.xx.xx.
datastream_udp.c, line 126 DATASTREAM_Open() 126: --> if (ipAddr.v[0] != 0 && ipAddr.v[0] != 169) // Wait for a Valid IP
Is this behavior absolutely necessary?
In RFC 3927, the Internet Engineering Task Force (IETF) has reserved the IPv4 address block 169.254.0.0/16 (169.254.0.0 – 169.254.255.255) for link-local addressing. Link-local addresses are assigned to interfaces by host-internal. Link-local addresses are most often assigned automatically with a process known as stateless address autoconfiguration or link-local address.Routers do not forward packets with link-local source or destination addresses. This Link local address is auto configured address by the host after detecting IP address conflict or DHCP Discovery/Request fails.
To avoid Link local address configuration, this check is provided.
We are looking into this check if the check is required for ethernet bootloader or not.
I will update more on this.
We also faced same problem and it solved after many research, Please check the your LAN physical driver. In the demo code harmony 3 they used different physical LAN driver. We have changed that driver LAN and generated the code and its worked fine. As per the ATSAME70Q21B development board the LAN physical driver is LAN8740.
Using the sam_v71_xult.X project I've made the following modifications.
Observations
Any help debugging this issue would be appreciated. I can zip up and share the entire application if needed, but the steps above should be pretty easy to reproduce (except maybe the LED blinking).