Hello,
We are using a custom board and we are using Gmac0 controller on M core.
We are able to establish communication with the remote node using Gmac0 controller during this time the receive interrupt, GMAC0_CH0_RX_IRQHandler is hitting fine. But after a while the host stops acknowledging to the messages sent by remote node and when we check, at this time the receive interrupt, GMAC0_CH0_RX_IRQHandler is not hitting and the communication is stopping as the host stopped acknowledging to the messages sent by remote node.
Attaching the snippet of canoe trace for reference.
We tried the same activity for transmission via host and we see that the transmission is not stopping and is working fine.
Could you please support us to resolve the issue with the Gmac.
Regards,
Winston Lewis
Hello @winstonlewis,
Thanks for reaching out to us. Regarding your problem, please provide the following information so I am able to correctly help you:
Thanks in advance for the information.
Hello,
Thanks for the response,
Regards,
Winston Lewis
Hello @winstonlewis,
Thanks for all the information, I need some time to review all I need to give you proper feedback. For now, can you confirm if the problem occurs always around 3-4s? That is what I understood from the image you shared.
Thanks.
Hello,
Thanks for the response,
The time where the messages stop is not the same.
In our case we have 7 PDU's being sent to the ECU
Regards,
Winston Lewis
Hello @winstonlewis,
Thanks for the information, I have not understood that the problem was related to the payload size until now. Please helo me providing a memory dump of all the GMAC registers after the error has happened, this is from 0x4033_C000 to 0x4033_D368, this will help me get an exact idea of the state of the module at the time of the error.
Thanks.
Hello,
Sorry for the delayed response,
Attaching the binary file of the register dump after the error condition.
In the binary file, the address 0x00 corresponds to 0x4033_C000, when you open the file please change the start address to 0x4033_C000.
Regards,
Winston Lewis
Hello @winstonlewis,
Thanks for the information. Checking the dump I found the following register with value 5:
If you are using the RTD API, can you share the values in last argument of Gmac_Ip_ReadFrame(), it should be a pointer to a struct of type Gmac_Ip_RxInfoType:
this will help me confirm that the problem is an overflow of packets.
Thanks.
Hello,
Thanks for the response,
Sharing the values of the structure pointer Gmac_Ip_RxInfoType Info (attaching the snippet), we do not see any error.
Also the register, 0xC7D4 is not set, it is 0x00 (We tried multiple times still the register was not set). Attaching the snippet for your reference.
Regards,
Winston Lewis
Hello @winstonlewis,
Thanks for the information. Just to avoid any confusion, when you say that you do not see any error in the struct, this is after being able to reproduce the problem, correct?
Also, by '0xC7D4 is not set' you mean the full address 0x4033_C7D4 correct?
This is, either the memory dump you shared was taken in a different situation in which the register did have a value or either the tool or my analysis introduce an error. If you analyze the memory dump you shared before, do you come to the same conclusion as I did?
Thanks in advance.
Hello,
Thanks for the response,
The issue was with the Rx FIFO overflow, the total buffer length we configured was crossing 20KB (1536 bytes X 16 nos.).
When we reduced the size to less than 20KB it worked.
Thanks for the support.
Regards,
Winston Lewis
Hello @winstonlewis,
I am glad to know you were able to solve your problem.
Thanks for letting me know.
If you have more problems in the future please do not hesitate in creating a new post!
Best regards.