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.

AM572x EtherCAT restrictions

Other Parts Discussed in Thread: AM5728

Hi,

I made an EtherCAT board with the chip XAM5728BABCXE. I used PRU-ICSS-EtherCAT_Slave_01.00.00.00, builded and run ethercat_slave_demo\AM572x_debug\ethercat_slave_demo.out using CCS6.1.3.

I got a console message:

[CortexA15_0] boardName:
board type is AM572IDK

Version - Ethercat Slave 1.0.0.0
Board name  :

Chip Revision  : Non-EtherCAT Device

In my opinion, AM5728 support EtherCAT. But I don't understand why I got the message " Non-EtherCAT Device". Is it anything wrong? Thanks.

  • I will ask the ISDK team to look at this.
  • Hi, Biser,

    What is the ISDK team's answer? Thanks.

  • They will post directly here when feedback is available.
  • Hi carolyn,

    The Non-EtherCAT Device is returned from isEtherCATDevice() in protocols/ethercat_slave/ecat_appl/EcatStack/tiesc_soc_am57x.c. The MSB (bit[31:24]) of CTRL_WKUP_STD_FUSE_DIE_ID_2 register defines the part number ID to differetiate the EtherCAT slave capability, see TRM section 1.5 AM572x Device Identification Table 1-3. If you read 0x3C in bit[31:24] at 0x4AE0_C20C, the device is EtherCAT slave enabled. It appears the pre-built library including the file tiesc_soc_am57x.c was built with SOC_AM571x defined that causes Non-EtherCAT Device is returned from isEtherCATDevice() in AM5728 IDK. We are checking the build option and will update you soon.

    uint8_t isEtherCATDevice(void)

    {

       volatile uint32_t temp;

       temp = *((uint32_t *)(CSL_MPU_CTRL_MODULE_WKUP_CORE_REGISTERS_REGS +

                             CSL_CONTROL_CORE_WKUP_STD_FUSE_DIE_ID_2));

       temp = (temp >> 24);

       #ifdef SOC_AM572x

       if(60 == temp || 58 == temp)

       #elif defined(SOC_AM571x)

       if(54 == temp || 56 == temp)

       #endif

           return 1;

       return 0;

    }

    Regards,

    Garrett

  • Hi, Garrett,
    Yes, I read 0x3C in bit[31:24] at 0x4AE0_C20C. However, the program run "if(54 == temp || 56 == temp)" in function isEtherCATDevice(void). That means SOC_AM572x did not defined.
    What should I do about this? Thanks.
  • Hi Carolyn,

    The EtherCAT device ID doesn't impact any EtherCAT functionalities. The EtherCAT master can still succesfully detect the slave (single or in a chain). You can ignore the wrong device ID report for now and continue your development.

    Regards,
    Garrett
  • Hi, garrett,

    Thanks.

  • Hi, Garrett,

    I need to change function 'bsp_init' which is in tiescbsp.c to fit my board. However, I don't know how to compile it after changed. Could you tell me how to compile the EtherCAT firmware please?
    Thanks.
  • Hi Carolyn,

    Tiescbp.c is a file that is part of the full featured ethercat stack. Modification of this file is supported when building the full featured application using the Beckhoff/ETG stack.

    As outlined in user guide processors.wiki.ti.com/.../PRU_ICSS_EtherCAT there is a full-fledged application and provides full flexibility and configurability. However this application requires the complete stack source. As per the SLA terms, TI cannot distribute the stack (Beckhoff Slave Sample Code) in source format. Therefore, to build this application, user must get the SSC 5.11 source code from ETG website and apply the provided patch. The project files for this application can be generated following Generating Project Files. For more information, refer the section on "Building Full Feature EtherCAT Application" of the User Guide.
    This code is available to ETG members. Membership is free.

    Btw, please create a separate thread if it's a new topic so we won't miss it.

    Regards,
    Garrett