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.

TM4C129ENCPDT: ROM_EMACTxDMAPollDemand "sometimes" does not send

Part Number: TM4C129ENCPDT


Can you think about a reason why calling ROM_EMACTxDMAPollDemand() with no "known" errors

yield, sometimes, a situation where nothing is sent on the Ethernet?

It happens sometimes, and we know nothing was send using Wireshark.

any clue?

  • Hi Amir,
    Are you using any upper level stacks or only bare metal ethernet?

    Are you getting any errors when the MAC does not transmit? Is it possible that the OWNER bit for the descriptor that the DMA is trying to access to has already been cleared meaning that the descriptor belongs to the host rather than the DMA.
  • good answers, but sadly:
    1. Yes, I am using stack above it (not lwIP), and heavi O/S transactions of many concurrents TCP open/send/close
    2. there is no error, at least I don't get ISR with EMAC_INT_TX_UNDERFLOW
    3. Don't think its the OWNDER because that is checked right before he send using ROM_EMACTxDMAPollDemand

    What else might cause the EMAC not to send and not to say any error?
  • When that happends how do I know it in my firmware? interrupt? what bits set in EMACIntStatus() ?
    Where can we find more information beside the slim user-guide of "Peripheral Driver Library"?
  • Hi Amir,

     Please go to the datasheet Ethernet chapter for more information on the status register. Below is a snippet of all the flag bits in the EMACDMARIS register.

  • Thanks Charles, appreciate your inputs.
    I've read the datasheet, however there is a lot of "what if..." questions that I can't figure out from the datasheet
    for example, will the TX stops on few errors will it clear the OWN bit? and so on... :-(
    I think will search for a book on the net.
    Thanks