ECS Firmware Update over FoE Example

1. Base Example

As a base for this Example, the ECS CustomOD Example can be used:

netXStudio_ECSV5_simpleConfig_V2.1.0.0\netX 90 - EtherCAT Slave - simpleConfig V2.1.0.0\Components\cifXApplicationDemoECS\Sources

2. netX90 Use Case A

Activate FoE parameter evaluation in Set Configuration Packet:

ptConfigReq->tData.tBasicCfg.ulComponentInitialization |= ECAT_SET_CONFIG_DEVICEINFO | ECAT_SET_CONFIG_FOE;

ECAT_SET_CONFIG_FOE_T* ptFoE;

ptFoE=&ptConfigReq->tData.tComponentsCfg.tFoECfg;

ptFoE->ulTimeout= 1000;

Before an update can be done, the netX90 needs to be flashed with a maintenance firmware (MFW) and the *.mwc file.

For Use Case A the MFW V1.2.0.0 (File MFW-netX90_flash.mxf) or later can be used.

Insalled on netX the firmware ECS V5.1.0.4

and tested with the firmware ECS V5.1.0.5 as update.

3. netX90 Use Case C

Very important! With ECS V5.2.0.0 the MFW V1.3.0.0 or later is necessary.

Take the files fdl, fimware, hwc and MFW for use case c and flash it on the netX90

start the MFW (S400.6 on NXHX90 = on) or start the ECS firmware.

Follow this guide to create with netHost tool and the command HIL_FORMAT_REQ_DATA_FLAGS_FULLFORMAT a files system in the SQI flash:

Use Case C - Extended Webserver - getting started

activate in the Set Configuration Packet

ptConfigReq->tData.tBasicCfg.ulComponentInitialization |= ECAT_SET_CONFIG_DEVICEINFO | ECAT_SET_CONFIG_FOE;


ECAT_SET_CONFIG_FOE_T* ptFoE;

ptFoE=&ptConfigReq->tData.tComponentsCfg.tFoECfg;

ptFoE->ulTimeout= 1000;

4. Create Zip file for update

Take the firmware V5.1.0.5 and create the folder structure inside the zip file like this:

VAR0\XIP\FWUPDATE.NXI

Now create FWUPDATE.ZIP. The name of the zip file must be exactly FWUPDATE.ZIP .

Open the FWUPDATE.ZIP and take cate that the folder inside is VAR0\XIP\ and not FWUPDATE\VAR0\XIP\

More information can be found here: Firmware update. For example the settings for the zip archive.

5. Change the source code of the customOD Example

After downloading the zip archive, a trigger is necessary to send the packet HIL_FIRMWARE_RESET_REQ to the stack and to start the update.

For that the "Hello Word" object of the customOD example can be used.

In the Write Object Indciation, the AppECS_StartUpdateReq can be placed:


Details to this Request can be found here:

netX Dual-Port Memory packet-based services - netX 90/4000/4100 - Packet API (Revision 3)

Maintenance Firmware (netX 90/4000)

6. ESI file

Add FoE to ESI file:

Copy the updated ESI file to TwinCAT3 folder C:\TwinCAT\3.1\Config\Io\EtherCAT

7. TwinCAT

Start TwinCat. Change the device state to PREOP and select "Download...":

Do not forget to add .ZIP:

Click OK and wait for download process to be finished. You can see the progress status at the right bottom of Twincat.


After the download finished successfully, go to CoE-Online. Try to write object 4000:01, the update reset command (AppECS_StartUpdateReq) will be trigged.

After a click on "OK", the netX will reset and update to the new firmware.