I am using a TM4C129 on a TI Launchpad with Tivaware 2.1.1.71. I am trying to perform a bootload over ethernet with the boot triger being via a GPIO (PE3). Most of the time, the bootload works. About 20% of the time, I see a strange BOOTP packet being sent from the Launchpad to the Windows host. I see this strange packet in the packet sniffer that I am using as well as in the Windows host program itself. This is all using custom code on the Windows side as well as for the TI app (but note that the bootloader here is the TI supplied flash bootloader).
When I see the strange packet, it starts with the expected
0x01 0x01 0x06
which I believe indicates that this is a BOOTP request but the rest of the data does not match the expected pattern. In particular, I do not see the data representing the string "tiva" or "stellaris" for the server name. Instead I see a string of 0's so the Windows host code does not recognize the BOOTP request and therefore does not send a valid reply to allow the board to continue to the TFTP portion. When I see this packet the data is something like (obviously this is for a given transaction ID; values are in HEX; xx values are an IP address):
01 01 06 00 34 DB A6 C2 00 00 00 00 xx xx xx xx 00 00 00 00 00 00 00 00 00 00 00 00 20 47 47 BB AA B8 00 00....etc... all 00 after this
The valid data looks something like
01 01 06 00 D7 7C EE 91 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1A B6 00 64 00 00 00 00 00 00 00 00 00 74 69 76 61 00 00 ... etc
The other strange thing is that the packet sniffer refers to the first data listed above as DHCP rather than BOOTP (and maybe it is DHCP. I am not sure about that) but I find it strange that the 01 01 06 byte pattern is there.
I am wondering if anyone else has seen this and if so, is there a workaround other than to have the Windows host keep trying to receive a BOOTP packet. If I do that as a workaround, then on the second or third receive attempt the host software does receive a valid BOOT packet and I am able to continue and exercise the TFTP code, which completes correctly.
So, is this expected behavior or is there something that I should be looking at to prevent this from happening? Any buffers that should be flushed etc?