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.

AM5718: idkAM571x EtherCat Slave on PRU-ICSS1

Part Number: AM5718

Dear TI-Support 

I currently try to run the EtherCat Slave Example on a idkAM571x on PRU-ICSS1. I started with the unmodified example where the EtherCat slave runs in PRU-ICSS2. This works as expected. Then I changed the definition in tiesc_soc.h: #define PRUICSS_INSTANCE        PRUICSS_INSTANCE_ONE as mentioned in the ethercat slave example users guide: https://software-dl.ti.com/processor-industrial-sw/esd/docs/indsw/EtherCAT_Slave/01_00_07/PRU_ICSS_EtherCAT.html. In addition a changed the Ethernet cable to J3 PRU1ETH0. 

Now TwinCat is not able to recognize the device. It is not even able to set the attached EK1200 to Pre-Op state. I can see a lot of Lost-Frames in TwinCat. I'm using PRU-ICSS-EtherCAT_Slave_01.00.10.00. My suspicion is that the PRUs PRUSS_MII_RT_TXCFG0 and PRUSS_MII_RT_TXCFG1 are not configured as when the PRU Firmware is loaded in the PRU-ICSS2. 

Can you replicate this issue? Is there anything else which has to be done in the example to run in on PRU-ICSS1? 

Is the PRU Firmware code somewhere available to further debug the issue? 

Kind regards 

Marco 

  • Hi,

    I'm encountering a similar issue, just wanted to see if you've figured anything out since this was posted three weeks ago.  I did notice that the pinmux for PRU1 Eth0 is commented out in the PDK source under \pdk_am57xx_1_0_18\packages\ti\board\src\idkAM571x\idkAM571x_pinmux.c.  This likely has something to do with the issue.  I did try removing the comments and rebuilding the library /lib/idkAM571x/a15/release/ti.board.aa15fg, but that didn't resolve the issue for me.

  • Dear Ryan 

    On our custom board changing the LINK_POL values for the MDIO initialisation solved the problem. I was not able to make the TI example work. In the example code the LINK_POL values are defined in tiesc_soc.h file. They are different for PRU Instance 1 and 2. I don't understand the reason for that. Maybe someone from TI can solve this question? 

    Kind regards 

    Marco 

  • Marco,

    Thanks for the response!  Can you clarify exactly what LINK_POL values you used?  We're using a patch from TI that made some changes to LINK_POL and moved the values to board_phy.c to resolve a Lines Crossed Error.  My default values are as follows.


  • Dear Ryan 

    I use the following configuration on our custom board: 

      TIESC_WriteDWord((TIESC_TI_PHY_LINK_POLARITY_ACTIVE_HIGH << BOARD_ICSS_EMAC_PORT0_PHY_ADDR) |
                       (TIESC_TI_PHY_LINK_POLARITY_ACTIVE_HIGH << BOARD_ICSS_EMAC_PORT1_PHY_ADDR),
                       TIESCHW_ADDR_TI_PHY_LINK_POLARITY);