Hi,
We are using the TMS570 chip and the lwip-1.4.1. We are getting stuck at the following section of code (in red, below) in the file hdkif.c :
/* TODO: (This is a workaround) Wait for the EOQ bit is set */
while (EMAC_BUF_DESC_EOQ != (hdkif_swizzle_data(curr_bd->flags_pktlen) & EMAC_BUF_DESC_EOQ));
/* TODO: (This is a workaround) Don't write to TXHDP0 until it turns to zero */
while (0 != *((uint32 *)0xFCF78600));
curr_bd->next = hdkif_swizzle_txp(active_head);
if (EMAC_BUF_DESC_EOQ == (hdkif_swizzle_data(curr_bd->flags_pktlen) & EMAC_BUF_DESC_EOQ)) {
/* Write the Header Descriptor Pointer and start DMA */
EMACTxHdrDescPtrWrite(hdkif->emac_base, (unsigned int)(active_head), 0);
}
When we telnet to the device and request a dump of data, the above while loop never exits. We have observed this same issue after sending multiple packets.
I did see a reference a few years back about there being a race condition which matches the issue we see:
I wasn't able to resolve this problem. Has anyone resolved this issue or observed it and can provide a fix/solution?
Thanks
Malcolm