非易失性寄存器地址范围为$FFB0~$FFBF,共 16 B,如表 2-3 所示,它们分布在Flash存储器区域,包括 8 B后门密钥(可用于获取加密存储区资源访问的权限)、非易失性保护寄存器(NVPROT)、非易失性选项寄存器(NVOPT)以及用于ICG模块时钟微调的ICGTRM值。在上电复位时,非易失性寄存器(NVPROT)和NVOPT中的值被传送到地址为$1821的高页寄存器FPROT里和地址为$1824 的高页寄存器FOPT里,用于控制块保护和加密。有关FPROT和FOPT寄存器的功能,可参看 14.2.1 节和 14.2.2 节的内容。
表 2-3 非易失性寄存器
(续表)
如果NVOPT中的KEYEN位为 1,8 B的后门密钥值可用于临时解除存储器加密状态,这种机制仅仅能被运行在加密Flash中的用户代码所采用。8 B是不能直接通过背景调试命令输入的,这 8 B的功能可以通过编程NVOPT中的KEYEN位为 0 来完全禁止。如果 8 B比较值的加密功能被禁止,解除存储器加密的唯一手段就只有整体擦除Flash使得Flash为空(擦除Flash通常通过背景调试接口)。为了避免在下次复位时返回到加密模式,可以把NVOPT中的加密位(SEC01:SEC00)编程为非加密状态(1∶0)。
把NVOPT设置为%01000010 的汇编代码如下: