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.

Sys/Bios Fimware FilesEtherCAT ICE v1

Folks,

I have a set of SDK files for my ICE v1 EtherCAT board. How am I supposed to use them?

These are the files:

ecat_frame_handler.bin

ecat_frame_handler_bin.h

ecat_host_interface.bin

ecat_host_interface_bin.h

Am I supposed to install them like a regular firmware on my board? Why do I have two, then? I can only install one firmware at a time. Unless each firmware has a different offset in my flash memory?

  • I've moved your post to the device forum.

    Todd
  • Hi Prototo:

    HRT PRU firmware - (ecat_frame_handler_bin.h) on PRU0.

    SRT PRU firmware - (ecat_host_interface_bin.h) on PRU1.

    see

    NOTE 2: By Default, Both EtherCAT applications embed the PRU firmware binaries into the application binary. However, loading PRU firmware from SPI flash is also supported in this version. In this case, the EtherCAT application will load PRU firmware from SPI flash memory (if available) during run-time. This saves almost 16KB memory by reducing the binary size. The EtherCAT binary expects the PRU0 firmware at an offset of 0x98000 from the beginning of SPI memory and PRU1 firmware at an offset of 0x9C000 from the beginning of SPI memory.

    Also from "PRU ICSS EtherCAT firmware API guide": .

    PRU firmware header mapping API

    void bsp_set_pru_firmware(Uint32* frameProc,Uint32 frameProcLen, Uint32* hostProc,Uint32 hostProcLen);

    Parameters

    • frameProc - Pointer to a buffer containing HRT PRU firmware (ecat_frame_handler_bin.h)

    • frameProcLen - Size of the HRT PRU firmware

    • hostProc - Pointer to a buffer containing SRT PRU firmware (ecat_host_interface_bin.h)

    • hostProcLen - Size of the SRT PRU firmware

    And check ./protocols/ethercat_slave/ecat_appl/EcatStack/tiescbsp.c:

       /* PRU firmwares are loaded as header files in appliation  */

       PRUICSS_setPRUBuffer(pruIcssHandle, 0, (Uint32 *)pru_frame_proc,

                            pru_frame_proc_len);

       PRUICSS_setPRUBuffer(pruIcssHandle, 1, (Uint32 *)pru_host_proc,

                            pru_host_proc_len);

    Regards, Garrett