LOCK - Memory Sections Access Protection

The device can be locked so that the memories cannot be read using the Unified Program and Debug Interface (UPDI). The locking protects both the Flash (all Boot Code, Application Code, and Application Data sections), SRAM, and the EEPROM including the FUSE data. This prevents the reading of application data or code using the debugger interface. Regular memory access from within the application is still enabled.

The device is locked by writing a non-valid key to the Lock Key (LOCK.KEY) register.

Table 1. Memory Access Unlocked (LOCK.KEY Valid Key)(1)
Memory Section CPU Access UPDI Access
Read Write Read Write
Flash Yes Yes Yes Yes
SRAM Yes Yes Yes Yes
EEPROM Yes Yes Yes Yes
SIGROW Yes No Yes No
USERROW Yes Yes Yes Yes
FUSE Yes No Yes Yes
LOCK Yes No Yes Yes
Registers Yes Yes Yes Yes
Table 2. Memory Access Locked (LOCK.KEY Invalid Key)(1)
Memory Section CPU Access UPDI Access
Read Write Read Write
Flash Yes Yes No No
SRAM Yes Yes No No
EEPROM Yes Yes No No
SIGROW Yes No No No
USERROW Yes Yes No Yes(2)
FUSE Yes No No No
LOCK Yes No No No
Registers Yes Yes No No
Notes:
  1. 1.Read operations marked No in the tables may appear to be successful, but the data is not valid. Hence, any attempt of code validation through the UPDI will fail on these memory sections.
  2. 2.In the Locked mode, the USERROW can be written using the Fuse Write command, but the current USERROW values cannot be read out.
Important: The only way to unlock a device is a CHIPERASE. No application data is retained.