1、 什么是SPROM?
新唐针对程序和数据安全提供两种保护机制, “Config0寄存器中安全锁” 和“安全保护存储器(SPROM)”。“Config0寄存器中安全锁”就是通过设置Config0使能安全加密功能,此方法可以避免从板上芯片读取整个程序和数据。“安全保护存储器(SPROM)”支持独立锁机制,不同于 “Config0寄存器中安全锁”。换句话说,用户可以不锁MCU的整个存储器,仅锁SPROM。把库的核心程序存在SPROM中,用户方便制作被保护的库给客户。
SPROM优势:
安全可靠,一旦上锁执行,所有工具读取SPROM数值都是00;
方便维护,方案商只需维护存放在SPROM的关键代码就能掌握程序主导权;
独立模块,同APROM相互独立,各自区域更新不会相互影响;
灵活应用,SPROM存放可以是程序,也可以是密钥或者参数;
2、SPROM介绍
根据不同的NuMicro® 系列,SPROM大小支持512字节存储地址为0x20_0000 ~ 0x20_01FF; 或支持2048字节存储地址为0x20_0000 ~ 0x20_07FF。 SPROM支持3种安全模式,分别为“不安全模式”、“调试安全模式”和“安全模式”。 SPROM的最后一个字节用于选择SPROM的当前模式。. 由于SPROM的特性在“安全模式”和“调试安全模式”不支持通用的ISP“擦除命令”。在这 两 种 模 式 下 , 用 户 需 要 用 指 定 数 据 0x0055AA03 进 行 “ 页 擦 除 命 令 ” , 即 ISPDAT=0x0055AA03去擦除SPROM。
3、 SPROM模式
不安全模式:如果SPROM 的最后一个字节为0xFF,SPROM 当前是“不安全模式”。
在“不安全模式” 下, SPROM 的访问行为与APROM 和LDROM相同。所有存储区域都可以通过CPU或ISP命令读取,通过ISP命令擦除和编程。
调试安全模式:如果SPROM 的最后一个字节为0xAA,SPROM 当前是“调试安全模式”。
在“调试安全模 式”下,当CPU在SPROM地址空间运行时,SPROM中的程序和数据可以通过CPU读取。但是 通过在线仿真器ICE读出总是0x0000_0000,通过ISP“读出命令”读出是0xFFFF_FFFF。
安全模式:如果SPROM 的最后一个字节即不是0xFF也不是0xAA,SPROM为“安全模式”。
为了保护 SPROM中程序和数据,仅仅当CPU运行在SPROM中才能从SPROM中取指令和获取数据,否 则,CPU访问到的数据是0x0000_0000。为了保护SPROM,当ICE端口连接时CPU取到指令 是0x0000_0000。在这模式下,SPROM不支持ISP编程和读flash命令。仅仅支持用指定数据 0x0055AA03进行“页擦除命令” ,即ISPDAT=0x0055AA03去擦除SPROM。用户不能在ICE 调试模式下设置断点。
3种SPROM模式总结: