Other Parts Discussed in Thread: HALCOGEN, DP83640,
Presently we have written an application running on the
(Hercules TMS570LC43x Development Kit board) using the protocol stack lwIP
and the HALCOGEN drivers.
Our test program so far work fine and can transmit (Tx) or receive (Rx) burst of
UDP-ICMP packets without any problems.
However we have an annoying problem. Just after the driver initialization
phase we need to add a wait delay of (1 secs) before to start the first transmission.
If there is no delay, the first 2 or 3 frames transmitted (sent one after another)
get lost somewhere...
After tracing this problem on the driver Tx side (output) we see all the frames (from 1 to N) are sent
by driver normal way; the DMA transmission is started (by setting the TX HDP register), the
TX interrupt handler get called and finally ACK the interrupt. Same pattern for all requests.
However if we check on the other side of the fence on the cable (with Wireshark)
we do not see any transmissions for the first frames.
We have found a work around for this problem and it's to add a wait delay of 1 sec
(could be probably less) between the driver initialization and the transmission of the
first frames. With this fix all transmissions take place, nothing is lost and we see all the
frames sent on the network.
Questions:
1.- Can we consider the link at "steady state" after the driver initialization ?
(I have seen that in the past where a speed change need a 100ms
to settle down)
2.- In the hardware_init of the hdkif.c driver front-end at one point
the functions below are called in the initialisation code
MDIOPhyRegRead(mdioBaseAddr, phyAddr, (uint32)PHY_BSR, &linkStatus);
followed by
l inkStatus = (uint16)MDIOPhyLinkStatusGet(mdioBaseAddr);
They are called in fact before the successfull autonegociation of the speed
(100Mbps - Full Duplex)). After the autonegociation no check for a PHY link ready
status..
3.- Which register do we need to check on the DP83640 PHY (or EMAC) for getting a link
fully functional status by the application.
Regards,
Yvon Belec