Update Firmware over EtherCAT
You’ll need to have the poulpe board with the firmware_Poulpe
version of at least v1.5.x
to be able to update the firmware over EtherCAT.
Update the firmware
Once when you have your firmware_Poulpe
compiled and trasnformed to the binary file, you can update the firmware on the poulpe board over the EtherCAT network.
Using the EtherCAT client
You can transfer the firmware binary file to the poulpe board using the ethercat
client:
ethercat foe_write -p0 firmware.bin --verbose # it will write the firmware to the slave with id 0
Once when this is done, you can send the SDO request the the poulpe board to complete the firmware update. The firmware will wait for on the SDO index 0x100
and the subindex 1
for the value that corresponds to the file size of the firmware in bytes. You can get the fie size in bytes with the following command:
stat -c %s firmware.bin
Then you can send the SDO request with the following command (ex. 1000 bytes):
ethercat sdo_write -p0 0x100 1 -t uint32 1000 # it will write the value 1000 to the SDO index 0x100 and subindex 1 of the slave with id 0
Read the number of bytes received by the poulpe board
You can also test how many bytes are already written to the poulpe board by reading the SDO index 0x100
and subindex 1
:
ethercat sdo_read -p0 0x100 1 -t uint32 # it will read the value of the SDO index 0x100 and subindex 1 of the slave with id 0
You should have exactly the same number of bites as the file size that you have written to the board.
The firmware will then start the update process. Once when the update is done, the poulpe board will restart and the new firmware will be loaded.
Using the update_firmware script
You can also use the update_firmware
script that is located in the poulpe_ethercat_controller
crate.
sh update_firmware.sh 0 firmware.bin # it will update the firmware of the slave with id 0 with the firmware.bin file
The script will automatically send the firmware to the baord, verify that it has been well received and then send the SDO request to start the update process.