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.

RM57L843: EMAC delayed state of EOQ leads to race conditions

Part Number: RM57L843

I am using the RM57 EMAC in a safety critical application and we want to avoid interrupt driven I/O.  As such, the code is watching for EOQ flags on the CPPI descriptors to identify the state of the CPPI state machine.  What appears to be happening is that the CPPI state machine is not updating the EOQ flag until the frame has completed transmission, but has internally already decided to stop processing.

Troubleshooting story:

   The implementation always appends new descriptors to the active CPPI chain's tail.  It then checks the status of the tail's EOQ to determine if the state machine needs HDP to be set.  Intermittently, the CPPI chain stalls, showing an EOQ in an earlier descriptor, and never changing the OWNER flag of later descriptors.    This happens on both the receive and transmit CPPI chains.

As a workaround, I am monitoring the HDP value, and when it has a value of 0, I'm restarting the chain using the CP->next.  Does this seem like a sensible/safe approach?

Alternatively, I had another workaround (Workaround for RM57 EMAC EOQ race condition).  But I never received a definitive answer as to the soundness of that approach.

As this is a safety critical application, I'd like to understand what TI recommends for operation of the EMAC.

  • Stephen,

    I've forwarded your post to one of our EMAC experts. They should get back with you within the next few days.

    Also please note that we can't really comment as to the safeness of your code due to liability related issues. We can only comment in regard to whether your implementation operates within the constraints of the implemented module. I know this is a matter of semantics but is a necessary disclaimer regarding safety implementations.
  • Is there any update from the EMAC experts?
  • I don't think there is really any further updates other than what was identified in your original post on the topic in e2e.ti.com/.../526697 and what is posted in this thread e2e.ti.com/.../543686 on the Sitara E2E. In general, I think you are talking about finding a way around a behavior that is built into the device and is described in the TRM as a known behavior. For your specific implementation, I would suggest validating your solution with your specific application needs and exhaustive verification efforts to assure it covers all the specific use cases you intend. If it passes all of these cases, then it should be fine for use within your system especially if there used in compliance with the provided documentation (TRM, Datasheet, etc.).