SpringCore system can be upgraded using Direct or PC/SC.
Firmware upgrade files contain a collection of a few firmwares, to upgrade all the chips that makes the SpringCore (the MCU, the BLE interface, the NFC interface, ...).
Each upgrade firmware use the following format:
||Firmware part, see table below|
||Firmware's CRC32 (firmware size is padded to be on 4 bytes boundary for crc generation but raw length and raw data remains unchanged)|
||Firmware raw length|
||Firmware raw data|
An upgrade binary may contain one or more concatenated upgrade firmwares.
Firmware's CRC32 and Chip family are used to detect if the upgrade firmware and the running firmware are identical. Upgrade process is cancelled if it differs.
Upgrade binaries are generated using the SCPacker utility.
||MCU firmware for RX651 or RX65N||This is the only part that could be loaded directly into the MCU's flash through the bootloader, all other parts have to go to the (external) (storage) flash through a running firmware|
||PN5180 firmware||For devices with a NFC/RFID HF interface|
||BGM111 firmware||For devices with a BLE interface|
||Audio pack||For devices with an audio output capability|
||S550 PIC firmware||For devices with the UI interface delegated to a PIC|
||Meta-data||Not actually stored in the device, but used to describe the firmware upgrade file|
RX firmware format
Rx firmware has been transformed by SCPacker to match Rx's internal rom upgrade requirements (alignment, size and empty sectors).
Rx firmware raw data header:
||Firmware mark 1 pointer (Rom address of firmware mark 1 value)|
||Firmware mark 2|
||Firmware ID (firmware binary's one)|
||Firmware starting point|
|...||Firmware mark 1 (storage address may differ from firmware builds).|
Rx's Firmware ID is used to check if this upgrade file is compliant with the current device. If it differs from the one stored in the non-volatile memory then the upgrade is cancelled.
Panic firmware is allowed to be flashed on any SpringCore-like devices for recovery.
BGM firmware format
A BGM firmware has no known header and contains the whole xxxxx_full.gbl file.
PN5180 firmware format
A PN5180 firmware has no known header and contains the whole xxxxx.sfwu file.
Metas firmware format
A metas firmware has no known header and contains the content of a txt or a json file. A metas firmware is always the first in the collection.
Firmware ID specifications
Each product's families are identified by a 32 bits value: Firmware ID. A device can only accept new firmwares with the same Firmware ID. Firmware is defined within the firmware and is stored in the NVM's constant area on the first startup. Firmware ID is only suitable for RX firmware!
An exception: all products are able to accept a Panic Firmware (Firmware ID 0xDEADBEEF).