Hello,
My customers have created the EtherNet/IP Adapter product using the AMIC110.
Master (Scanner) is connected to 7 Slaves (Adapter) in a daisy chain.
After running for several days, the Slave device will randomly enter an infinite loop and communication will not be possible.
The frequency is unknown. Sometimes it does not occur in a week, and sometimes it occurs in tens of hours.
They have verified in various environments, slave changes, cable changes....
As a result, we suspect that the AMIC110 software is the problem.
This program is almost the same as the PRU-ICSS EtherNet IP example.
・PROCESSOR-SDK-RTOS (version: 05.02.00.10)
・PRU-ICSS-ETHERNETIP-ADAPTER (version: 01.00.03.04)
・Code Composer Studio (version:9.3.0.00012)
When communication is lost, the device is in the infinite loop.
pdk_am335x_1_0_13\packages\ti\transport\ndk\nimu_icss\src\nimu_icssSwitchEmac.c
while in the "NIMU_ICSS_rxServiceCheck" function.
We are guessing there's probably a problem in ICSS_EmacRxPktGet called by rxCallBack.
pdk_am335x_1_0_13\packages\ti\drv\icss_emac\src\icss_emacDrv.c
The normal operation is "update_rd_ptr <queue_wr_ptr", and WP (wr_ptr) is copied to RP (rd_ptr).
When this problem occurs, update_rd_ptr (RP)> queue_wr_ptr (WP).
Therefore, "if (update_rd_ptr! = Queue_wr_ptr)" is always true and "rxArg-> more = 1" is performed.
Normally this does not happen. (Because of the ring buffer, it may happen occasionally)
Customers have the following questions:
Q1: When does "RP> WP" occur?
Q2: Could you tell me how to solve this situation.
Regards,
Rei