Other Parts Discussed in Thread: C2000WARE
Hi,
I am running a UDP application on the CM core based on lwIP 2.1.2 shipped in C2000Ware 2.00.00.02. My network setup is that the target and my PC are both connected to a router and I am assigning static IP for both.
Now when I do a UDP broadcast from the target, I am able to receive it on my PC. However, when I try to unicast the UDP message to the IP address of my PC, I see that no data is being received.
I isolated the cause of the issue to the update of IP address entry in the ARP table.
The lwIP API "udp_send" ultimately calls "etharp_output", which then broadcasts an ARP request (by calling "etharp_request") to find the MAC address associated with the IP, if the UDP message is intended for unicast.
I observed that even though the lwIP API "etharp_request" returns a successful status, there is no ARP request actually sent by the target. Hence, the ARP table entry remains in "ETHARP_STATE_PENDING" state and the data transmission does not start.
This problem does not occur if I put a breakpoint before "etharp_request", wait for a moment and then continue free run. In this case, I see an ARP request is broadcasted, PC responds with its MAC address and the UDP data transmission starts immediately.
It seems like the lwIP API is successfully queuing the ARP request but the hardware is not able to send it without a delay.
I found this exact issue mentioned in e2e posts for other TI hardware, but without any resolution: TIVA processor and Hercules MCU
I want to understand why is the delay needed to send the ARP broadcast and if this is a documented limitation of the target? Is there anything I can improve in my application to make sure that ARP message is sent correctly?
Any help regarding this is appreciated.
 
				 
		 
					 
                           
				 
				