16.5.10 Unrecoverable Device Conditions

The PIC32CM device incorporates advanced security and intellectual property protection mechanisms. While these features are essential for safeguarding deployed applications, improper configuration may render the device permanently non-programmable and non-recoverable.

This section outlines specific operating conditions that users must avoid unless the intention is to permanently lock the device for field deployment.

Device Access Level and IMODE Command CMD_CE_ALL

Users must exercise extreme caution when programming the following fuses:

Table 16-4. Fuses that Require Caution
Fuse/CommandValue to avoid device brick condition
ROMCFG_FUSES → DALDAL0
IMODE command CMD_CE_ALLLOCKED
IMODE command CMD_HOST_DALELEVLOCKED

Programming the above configuration will permanently lock the device, disabling any future erase or reprogramming operations. This action should only be performed if the final goal is to prevent any further modification of the device once deployed in the field.

CAUTION: Once the device is locked using the above fuse settings, failure analysis capabilities at Microchip are also disabled. In other words, if the device fails in the field, Microchip may be unable to provide support or diagnostics. By applying this configuration, the user acknowledges and accepts the risk of limited or no support from Microchip in case of device failure.

ROMCFG and BOOTCFG1/1A Read and Write Protection

Certain fuse configurations may render the device partially usable by restricting access to critical configuration fuses. Specifically, if the following fuses are programmed, the user will no longer be able to reprogram the ROMCFG and USERCFG1/1A fuses.

Table 16-5. ROMCFG and BOOTCFG1/1A Read and Write Protection
ROMCFG/USERCFG FusesValue to avoid device brick condition
ROMCFG_FUSES → DALDAL2
KEY_VAL of CMD_CE_ALLLocked (0x00000000)
USERCFG_FUSES → FCW_CWP.RCWPSET (= 1)
USERCFG_FUSES → FCW_CWP.RCWPLCKSET (=1)
USERCFG_FUSES → FCW_CWP.BC1WPSET (=1)
USERCFG_FUSES → FCW_CWP.BC1WPLCKSET (=1)

Once these write protections are enabled and locked, the device enters a restricted state where further modification of these fuses is not possible through standard methods.

MBIST Failure

The MBIST (Memory Built-In Self-Test) feature is a valuable safety mechanism offered by the PIC32CM device, particularly for applications requiring enhanced reliability of volatile user memory (SRAM). Once enabled through the ROMCFG_FUSES → FRCFGMBIST fuse, MBIST is executed automatically by the device during boot, without requiring any software or user intervention.

MBIST Operation:

  • MBIST can be configured to run:
    • On every reset, or
    • Only after Power-on Reset (POR)
  • Refer to the ROMCFG_FUSES section for details on selecting the MBIST-on-boot behavior

Device Behavior on MBIST Failure:

  • If MBIST fails during boot, the Boot ROM halts further boot operations, rendering the device inaccessible
  • The device does not proceed to execute any user application code, and no recovery is performed automatically
Note: In scenarios where the device does not boot, users can attempt to diagnose the issue by reading the DSU_REGS → BCC[1] register. To access this register, the user must connect a supported host debugger to the device through the SWD interface. It is essential that the host debugger supports capturing the DSU_REGS → BCC[1] register in such scenarios. Refer to the respective debugger’s user guide/manual for detailed instructions on accessing and interpreting MBIST-related or other boot error conditions.