Flashing a new firmware with springcoreflash.exe

SpringCore is the umbrella name to the new generation of SpringCard devices (Puck, SpringPark, etc.) that share the same MCU platform and the same overall architecture. springcoreflash.exe, a software from the SpringCore Tools suite, is the command-line utility to change a device’s firmware (i.e. to “flash” a firmware).

This article shows how springcoreflash.exe works.

To download and setup springcoreflash.exe and the related tools, please read Installing the SpringCore Tools.

For more details on using the software, please refer to its online manual that is available at docs.springcard.com/books/Tools/SpringCore/SpringCoreFlash

NB: all screenshots in the article have been taken on a Windows system, but the software also runs on macOS and Linux (over the Mono runtime).

List the devices and select the target

If you have a single SpringCore device connected to your computer at a time, you may skip this paragraph.

springcoreflash.exe operates on one SpringCore device at once. Therefore, if two or more devices are connected simultaneously to the computer, the command-line must specify which one is the target device.

Enumerate the available devices

Use springcoreflash.exe --list to list the devices.

Identify the device you want to work with, and remember its number.

Tip: if you have many devices of the same type (say, two Puck One), use springcoreflash.exe --list-details to complete the list with the serial number, and use the device’s label to find the right one.

Select the target device

Knowing the device’s number in the list, add the --index <NUMBER> everytime you invoke springcoreflash.exe.

Flash a new firmware

Flash a downloaded firmware file

The firmware files (.BIN extension) for the SpringCore family are available on https://files.springcard.com/firmwares/springcore/

Make sure to select the right firmware file for your very device, in the latest version. Downgrading to an older firmware version is not supported!

Download the .BIN file you want to use and save it on a local drive.

Use springcoreflash.exe --file <FIRMWARE IMAGE FILE NAME> to write this new firmware into the device.

Once the firmware has been transmitted (and the tool has exited), the device restarts in upgrade mode and applies its new firmware. It typically takes 10 to 90 seconds depending on the number of chips (electronic parts) that are to be upgraded on the board. At the end of the procedure, the device restarts at last time and activate its new firmware.

Important: DO NOT MANUALLY RESET OR POWER DOWN THE DEVICE UNTIL THE NEW FIRMWARE HAS BEEN ACTIVATED.

Flash from an URL

Alternatively, you may use springcoreflash.exe --url <COMPLETE URL OF THE FIRMWARE IMAGE> to write a firmware directly from its web address.

If the device is already up-to-date…

If the device is already up-to-date (same firmware, exactly the same version), springcoreflash.exe has nothing to transfer and the procedure exits immediately (yet the device has to restart to exit the upgrade mode).

If the firmware file is not compliant with the device…

springcoreflash.exe verifies that the target device is compliant with the supplied firmware file (or URL).

In case of an error, the procedure ends with message “This firmware is not compliant with this device”.

Devices in ‘rescue’ mode

If flashing a firmware fails for any reason (manuel reset, power loss, downgrade with an unsupported version…), the device may be both unable to activate the new firmware, and unable to restart with the previous one.

In this case, the device restarts in USB Direct, bootloader only mode (or ‘rescue’ mode). (On Windows, it appears with name “SpringCore’18 RX65x” under the Universal Serial Bus peripherals branch in the Device Manager).

If this situation occurs, proceed in two steps to restore the device to its normal state:

1. Run springcoreflash.exe a first time to (re)write a correct firmware in the device’s core CPU

springcoreflash.exe says “Device is in rescue mode” and precises that the firmware is written right into the MCU’s internal ROM (not into flash as usual).

Wait until the device restarts and

2. Run springcoreflash.exe a second time with the same firmware to (re)write the correct firmware in all other electronic parts of the board.

springcoreflash.exe now says “Writing McuRX65 firmware into flash”.