NXP TPMS芯片之-访问错误和块保护
访问错误
只要违反命令执行协议,就会发生访问错误。
以下任何特定操作都将导致设置FSTAT中的访问错误标志(FACCERR)。在处理任何命令之前,必须通过在FSTAT中将1写入FACCERR来清除FACCERR。
•在通过写入FCDIV寄存器设置内部闪存时钟频率之前写入闪存地址
•未设置FCBEF时写入闪存地址(在命令缓冲区为空之前,无法启动新命令。)
•在启动前一个命令之前,第二次写入闪存地址(每个命令只有一次写入闪存)
•在启动前一个命令之前,第二次写入FCMD(每个命令只有一次写入FCMD)
•写入闪存地址后,写入除FCMD以外的任何闪存控制寄存器
•将五个允许代码(0x05、0x20、0x25、0x40或0x41)以外的任何命令代码写入FCMD
•将命令写入FCMD后,访问(读取或写入)除写入FSTAT之外的任何闪存控制寄存器(清除FCBEF并启动命令)。
•当程序或擦除命令正在执行时,MCU进入停止模式(命令被中止)
•在MCU处于安全状态时,使用后台调试命令写入字节程序、突发程序或页面擦除命令代码(0x20、0x25或0x40)(后台调试控制器只能在MCU处于安全状态时执行空白检查和批量擦除命令)
•将0写入FCBEF以取消部分命令。
flash块保护功能
块保护功能可防止闪存的受保护区域发生编程或擦除更改。块保护是
通过闪存保护寄存器(FPROT)控制。启用时,块保护从闪存最后一个地址0xFFFF下方的任何512字节边界开始。
退出复位后,FPROT加载闪存非易失性寄存器块中NVPROT位置的内容。无法直接从应用软件更改FPROT,因此失控程序无法更改块保护设置。由于NVPROT在闪存的最后512字节内,因此如果任何内存量受到保护,则NVPROT本身受到保护,并且不能被应用软件更改(有意或无意)。FPROT可以通过后台调试命令写入,该命令允许擦除和重新编程受保护的闪存。
块保护机制如下所示。FPS位用作未受保护内存最后一个地址的高位。如图所示,该地址由FPS7:FPS1与逻辑1位串联而成。例如,为了保护内存的最后8192字节(地址0xE000到0xFFFF),必须将FPS位设置为1101 111,这将导致值0xDFFF作为未受保护内存的最后地址。除了将FPS位编程为适当的值外,FPDIS(NVPROT的位0)必须编程为逻辑0以启用块保护。因此,必须将值0xDE编程到NVPROT中,以保护地址0xE000到0xFFFF。
块保护的一个用途是为引导加载程序块保护闪存区域。然后,该引导加载程序可用于擦除闪存的其余部分并对其重新编程。由于Bootloader受到保护,即使MCU电源在擦除和重编程操作的中间丢失,它仍然保持完整。
注:整理自网络