飞思卡尔TPMS芯片之–加密
加密
TPMS芯片中包含有用于防止非法访问Flash和RAM存储器内容的电路。启用了加密之后,Flash和RAM被看作是加密的资源。
直接页面寄存器、高页寄存器和后台调试控制器被看作是不加密的资源。
加密存储器中执行的程序可以正常访问任何MCU存储器位置和资源。
通过不加密存储器空间内运行的程序或通过背景调试接口访问加密存储器位置的任何尝试都将被阻止(写入操作被忽略,而读取操作则全部返回0)。
加密的启用和关闭根据FOPT寄存器中的两个寄存器位(SEC01:SEC00)的状态决定。在复位过程中,非易失性位置NVOPT的内容从Flash中复制到高页寄存器空间内的FOPT工作寄存器上。
用户可以通过对NVOPT位置进行编程,来启用加密。这一操作可以在对Flash进行编程的同时进行。l:0状态会关闭加密;而另外三个组合会启用加密。
请注意,擦除状态(1:1)会使MCU处于加密状态。在开发过程中,每当Flash被擦除,有效的方法是立即将NVOPT中的SEC0设置为o,以便使SEC=l:o。这将使MCU在后来复位后继续处于不加密状态。
MCU处于加密状态时不能启用片上调试模块。
您可以,MCU 为后台存储器访问命令使用独立的背景调试控制器,但MCU不能进入主动背景模式,除非您在复位的上升边将BKGD/MS保持在较低位置。
用户可以选择通过8字节后门加密密钥来允许或不允许加密解锁机制。
如果NVOPT/FOPT中的非易失性KEYEN位为0,那么说明后门密钥被禁用,在没有完全擦除所有Flash空间的情况下不能解除加密。
如果KEYEN为l,那么加密的用户程序可以通过以下方式来暂时关闭加密性:
- 向FCNFG寄存器中的KEYACC写入1。这将使Flash模块将后门对比密钥位置(NVBACKKEY至NVBACKKEY+7)的写入解释为将与密钥进行对比的值,而非Flash编程或擦除命令的第一步。
- 将用户输入的密钥值写入到位置NVBACKKEY至NVBACKKEY+7。这些写入操作必须按顺序进行,从NvBACKKEY值开始,到NVBACKKEY+7值结束。这些写入操作中必须使用STHX,因为这些写入不能在相邻的总线循环上完成。软件一般通过通信接口(如串行I/o)从MCU系统外部获取密钥代码。
- 向FCNFG寄存器中的KEYACC写入0。如果写入的8字节密钥与Flash位置上保存的密钥相匹配,那么SEC位被自动修改为1:O,同时加密性将关闭,直到下一个复位。加密密钥只能从加密存储器(RAM或Flash)中写入,因此在没有加密的用户程序协作的情况下不能通过后台命令输入。
注意:来自网络整理