Upgrade Firmware

Overview

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, ...).

Mapping

Each upgrade firmware use the following format:

Byte Content
0-1 Firmware part, see table below
2-5 Firmware's CRC32 (firmware size is padded to be on 4 bytes boundary for crc generation but raw length and raw data remains unchanged)
6-9 Firmware raw length
10-[ 11 + 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.

Firmware parts

Part ID Description Remark
0000 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
0001 PN5180 firmware For devices with a NFC/RFID HF interface
0002 BGM111 firmware For devices with a BLE interface
0003 Audio pack For devices with an audio output capability
0004 S550 PIC firmware For devices with the UI interface delegated to a PIC
FFFF 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:

Byte Content
0-3 Firmware mark 1 pointer (Rom address of firmware mark 1 value)
4-7 Firmware mark 2
8-11 Firmware ID (firmware binary's one)
12-15 RFU
16-... 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).