This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LC4357: TMS570LC4357

Part Number: TMS570LC4357

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:

TMS570LC4 EMACTransmit() issue - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums

I wasn't able to resolve this problem. Has anyone resolved this issue or observed it and can provide a fix/solution?

Thanks

Malcolm