工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->综合电路图->综合电路图->单片机在线可编程 Flash安全选项使用指南

单片机在线可编程 Flash安全选项使用指南

作者:angelazhang时间:2015-11-09

Silicon Labs 集成设备具有FLASH在线可编程,可随时升级存储代码的特性。工程师可通过JTAG接口或通过应用程序代码轻松进行FLASH编程。所有信息以代码和常数格式存储于FALSH。为此,Silicon Labs提供了安全选项以阻止设计者非法进入FLASH读存储信息。包括:

1、阻止非法进入修改FLASH信息。

2、防止终端用户意外修改代码信息。

3、防止由于系统意外条件修改代码(例如,设备供电电压低)。


Silicon Labs 通过使用编程安全字节来实现阻止包括终端用户通过JTAG端口和应用软件加载非法进入FLASH。本应用笔记将讨论如何使用和操作FLASH安全选项。本应用笔记适应于C8051F0XX/F2XX系列单片机。


FLASH安全选项的功能

通过设置FLASH安全字节为0,以保护通过JTAG即可进入FLASH。

通过设置软件读限制,以保护FALSH内存被软件读取(可允许终端用户读取部分FLASH内存)

使用FALSH安全字节,既可以保护软件修改FLASH,也可以保护通过JTAG端口修改FLASH。

当启用FLASH保护,FLASH页中包含的FLASH安全字节也被保护。(FALSH不能通过软件解锁)

如果终端用户不需要进入FLASH内存,则整个FLASH内存能够通过简单的锁整个FLASH进行保护(在这种情况下,软件读限制不需要,因为终端用户不能加载软件)


阻止FLASH进入通过JTAG接口

读、写、擦除FALSH内存的两个方法之一是通过JTAG接口(参考应用笔记AN005),FLASH可编程的安全字节位于FLASH中,用于阻止通过JTAG接口读、写、擦除FLASH块中512个字节的任何一个字节。

FLASH安全字节位于FLASH内存中的位置如图1和图2所示,保护FLASH内存块不被非法读、写、擦除,参考内存块图。

尝试读一个被锁的字节段,返回值将为0,并将设置FLASHDAT寄存器的FAIL位为1,清除字节锁读对应的位为0将阻值通过JTAG接口读相应的块FLASH。

图1 C8051F0XX 系列安全字节


图2 C8051F2XX 系列安全字节


尝试写或擦除一个被锁的字节段,操作将被忽略,并将设置FLASHDAT寄存器的FAIL位为1,清除字节锁写、擦除对应的位为0,将阻值通过JTAG接口写、擦除相应的块FLASH。

注意:FLASH安全字节只能阻值通过JTAG的进入,软件仍能进入JTAG被锁的块!为了阻止非法进入,应用者需锁整个FLASH,上锁整个锁字节将阻止终端用户加载代码到没有上锁的内存和使用软件进入上锁内存空间。如果应用只想让部分内存上锁, FLASH进入受限制的特点可被应用,在应用中,让部分FLASH块被锁住,部分FLASH块不被锁住。


设备擦除

通过JTAG执行一个擦除操作,并使用读锁字节或擦除/写锁字节的地址,将把整个FLASH编程空间擦除(保留区域除外)。这个操作只能够通过JTAG接口进行,不能通过软件操作进行,如果软件尝试擦除包含锁字节的页将被忽略。如果使用一个不包含安全锁字节的地址擦除FLASH,则只会擦除一也512个字节。


阻止通过软件进入FLASH

Silicon Labs设备可通过应用软件进入FLASH内存,给出了一个进入被JTAG锁住的FLASH的方法(除非整个FLASH都被锁住),Silicon Labs设备提供了一个软件读受限的特征,软件读限制允许部分FLASH内存不能被访问,但部分FLASH内存可以被终端用户访问进入。

FLASH软件受限进入工作如下,设计者定义一个进入受限的地址,FLASH内存从地址0x0000向上包括被定义的地址称为软件读受限区,软件不能进入该区域。如果代码通过MVOC指令从软件受限区域装载一个值到软件受限区域之上,这个值将被用0x00代替,但是代码装载值到软件受限区域是不受限制的。在软件受限地址之上的FLASH空间可被作为正常的软件读、写、擦除操作,软件受限地址之下的FLASH空间读、写、擦除操作受限制。因此,应用程序可被保护防止意外修改,但仍有部分FLASH可供终端用户使用。

注意,软件读保护FLASH仍需用安全字节锁住以阻止通过JTAG接口进入。


设置软件读限制

软件读限制通过特殊功能寄存器FLACL进行设置,将读限制的上限地址写入寄存器FLACL,读受限的最低地址从0x00开始,如图3所示,如果FLACL寄存器配置为0x40,则软件受限地址为0x4000,因此,从地址0x0000到0x4000的区域将不能通过软件进入。代码可在FLACL区域上执行跳转或调用指令到读限制保护区域,只有MOVX和MOVC操作被读限制阻值。FLASH安全字节仍需被用于阻止JTAG进入地址0x4000以下的区域。


图3 FLACL:FLASH进入受限特殊功能寄存器

如果应用不需要FLASH内存被编程,则最后将整个FLASH上锁,软件进入读限制则不需要。


FLASH 写和擦除使能位

FLASH安全的功能之一是阻止意外修改代码,Silicon Labs的FLASH写、擦除操作,在没有使能编程使能位(PSWE)和编程擦除使能位(PSEE)情况下不能进行,为了写FLASH内存,PSWE位必须置1,当PSWE位置1,MOVX指令写FLASH内存,而不是写XRAM内存。为了擦除一页FLASH,PSEE和PSWE位都必须置1,当PSEE位置1,FLASH控制逻辑将一个写FLASH操作解释为擦除操作。PSEE和PSWE位可用于防止意外的写和擦除操作,但这个不能保护知识产权被非法进入,因为PSWE和PSEE位总是可进入,知识产权总是使用软件读限制和FLASH安全字节进行保护。




评论

技术专区