16.5.1 PIC32CM Boot ROM

The Boot ROM is the entry point of the device following any type of reset. It is responsible for performing essential device checks and applying user-defined configurations before transferring control to the first mutable application code. The Boot ROM operation can be logically divided into the following functional stages.

Device Fuse Integrity Check

Validates the integrity of critical fuse areas: USERCFG1/1A, ROMCFG, and CALOTP. The Boot ROM performs integrity checks on the USERCFG1/1A, ROMCFG, and CALOTP fuse regions. If any integrity violation is detected, the Boot ROM halts further execution and places the device into a known safe state called Boot Interactive Mode. This mode is described in detail in a later section.

Once fuse integrity is confirmed, the Boot ROM proceeds to apply the user-defined configuration settings.

Debugger Probe Detection

The Boot ROM is designed to asynchronously accept a cold-plugging request from a debugger (i.e. SWD host) at any time. The Boot ROM automatically senses debugger attachment following a successful cold-plug.

Application of User Configuration

Applies user-selected fuse configurations after successful integrity check. Details on available user configuration can be found from BootCFG1/1A and ROMCFG fuse details.

First Mutable Application Firmware Integrity Check (if enabled)

Performs an optional integrity check on the user application code, based on fuse settings and firmware meta data programmed by the user.

Fault Signaling (if enabled)

Asserts a user-configurable fault signal if an error is detected during the boot process, provided the user has enabled fault signaling via BOOTCFG 1/1A fuse called BOOT_GPIOSEL.

Transition to First Mutable Application Executable (FME)

Transfers control to the first mutable application executable which has to reside at 0x0800_0000 address of BFM by loading the PC and SP values only if boot operation is successful.